Как я могу динамически создать фильтр категории и вызвать ядро JUnit для запуска моих тестов? Я пытаюсь создать простой класс с основным методом, который можно вызвать для запуска моих тестов, но я уверен, что это чистый способ.Как передать CategoryFilter в JUnitcore?
Идея заключалась в том, чтобы разрешить включение и исключение в качестве параметров командной строки и использовать их для построения CategoryFilter
. Я потратил немало времени на это и еще не понял, как передать фильтр JunitCore.
public class SingleJUnitTestRunner {
public static void main(String... args) throws ClassNotFoundException {
System.out.println("Running tests");
System.out.println(Arrays.asList(args));
synchronized (Play.class) {
if (!Play.started) {
Play.init(new File("."), "test");
Play.start();
}
}
CategoryFilter catfil = Categories.CategoryFilter.include(Play.classloader.loadClass("testutils.SlowTests"));
List<Filter> filters = new ArrayList<Filter>();
filters.add(catfil);
TestSuite suite = new TestSuite();
for (Class tests : Play.classloader.getAnnotatedClasses(Category.class)) {
if (catfil.shouldRun(Description.createSuiteDescription(tests))) {
suite.addTest(new JUnit4TestAdapter(tests));
System.out.println("With " + tests.getName());
}
}
Result result = new JUnitCore().run(suite);
System.out.println(result.getRunCount());
System.exit(result.wasSuccessful() ? 0 : 1);
}
}