Как программно выполнить набор тестов с помощью JUnit4?

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

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

Но есть ли способ запуска всего пакета с использованием Java API, например, с помощью 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 suite = new Suite(klass, new RunnerBuilder() {
... // Implement methods
});
JUnitCore c = new JUnitCore();
c.run(Request.runner(suite));

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

Ответ 1

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

Computer computer = new Computer();

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

Ответ 2

Вы также можете использовать командную строку как

java org.junit.runner.JUnitCore имя класса тестов