2012-04-12 2 views
9

Я пытаюсь вызвать набор JUnit Test с помощью API. Я знаю, что вы можете до номера тестовых классов, используя следующие:Как программно выполнить тестовый набор с помощью JUnit4?

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    Test1.class, 
    Test2.class, ... 
}) 

Но есть способ, чтобы вызвать весь набор, используя API Java, используя JUnitCore, например?

Например, вы можете запустить тест, используя следующий код:

Runner r = 
try { 
    r = new BlockJUnit4ClassRunner(Class.forName(testClass)); 
} catch (ClassNotFoundException | InitializationError e) { 
    // handle 
} 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(r)); 

Update:

Из API, кажется, что само по себе люкс класса бегун, следовательно, следующий код, кажется, работает:

Suite suite = new Suite(klass, new RunnerBuilder() { 
... // Implement methods 
}); 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(suite)); 

Но я не уверен, если это рекомендуемый подход, или если есть какой-либо недостаток писать т он выше кода.

ответ

12

Просто укажите имя люкс класса JUnitCore:

Computer computer = new Computer(); 

JUnitCore jUnitCore = new JUnitCore(); 
jUnitCore.run(computer, MySuite.class); 
+0

Спасибо Мэтью! Я обязательно попробую. А пока у вас есть рекомендации по фрагменту кода в моем обновлении? – Neel

4

Вы можете также, что с помощью командной строки, как

Java тест org.junit.runner.JUnitCore имя класса

+5

Я не думаю, что это квалифицируется как «программно». – oers

+1

Это будет, если вы его вызовете с помощью runtime.exec –

+2

Или JunitCore.main (testClassName) –

Смежные вопросы