Ни один из других ответов не сделал это для меня. У меня было 40 тыс. Тестов, которые мне нужно было выполнить, поэтому перечисление каждого класса вручную было невозможным.
Я сделал это с ClasspathSuite . Набор тестов, который запускает все тестовые случаи Junit4 и Junit3 в пути к классам, выглядит следующим образом:
import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.extensions.cpsuite.ClasspathSuite.*;
import org.junit.runner.RunWith;
import org.junit.runner.JUnitCore;
import static org.junit.extensions.cpsuite.SuiteType.*;
@RunWith(ClasspathSuite.class)
@SuiteTypes({ JUNIT38_TEST_CLASSES, TEST_CLASSES })
public class RunAllSuite {
/* main method not needed, but I use it to run the tests */
public static void main(String args[]) {
JUnitCore.runClasses(RunAllSuite.class);
}
}
Мне нужно было запустить его из командной строки, вот что я сделал:
- Загружено cp-1.2.6.jar
- Создать ранее упомянутый RunAllSuite
- Скомпилируйте класс,
javac RunAllSuite.java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar
- запустить его с целевыми тестами в пути к классам,
java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar;path/to/runallsuite/folder;target/classes;target/test-classes RunAllSuite
И это все. С помощью вышеупомянутого RunAllSuite в любом месте вашего кода вы можете просто выполнить JUnitCore.runClasses (RunAllSuite.class), который выполняет все тесты в пути к классам. Есть и другие параметры конфигурации, которые описаны на домашней странице ClasspathSuite.
Обратите внимание, что приведенный выше класс ничего не печатает. Если это необходимо, вы можете сделать
import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.extensions.cpsuite.ClasspathSuite.*;
import org.junit.runner.RunWith;
import org.junit.runner.JUnitCore;
import org.junit.internal.TextListener;
import static org.junit.extensions.cpsuite.SuiteType.*;
@RunWith(ClasspathSuite.class)
@SuiteTypes({ JUNIT38_TEST_CLASSES, TEST_CLASSES })
public class RunAllSuite {
public static void main(String args[]) {
JUnitCore junit = new JUnitCore();
junit.addListener(new TextListener(System.out));
junit.run(RunAllSuite.class);
}
}