Самое основное решение - использовать Suite
с перечисленными необходимыми классами тестов.Например:
@RunWith(Suite.class)
@SuiteClasses({ FirstIT.class, SecondIT.class })
public class TestSuite {
}
Этот класс затем можно запустить непосредственно как тест в Eclipse
В противном случае можно использовать что-то вроде библиотеки Reflections сканирование:
@RunWith(ReflectionsScanner.class)
public class ReflectionsScanner extends Suite {
public ReflectionsScanner(Class<?> klass, RunnerBuilder builder)
throws InitializationError {
super(builder, klass, getAnnotatedClasses());
}
private static Class<?>[] getAnnotatedClasses() {
Reflections reflections = new Reflections("my.package",
new SubTypesScanner(false));
Set<String> allTypes = reflections.getAllTypes();
Class<?>[] matchingClasses = allTypes.stream()
.filter(name -> name.endsWith("IT")).map(name -> {
try {
return Class.forName(name);
} catch (Exception ex) {
throw new IllegalStateException(ex);
}
}).toArray(Class[]::new);
return matchingClasses;
}
}
reflections.getAllTypes()
иногда может быть слишком много - есть также getSubTypesOf()
и getTypesAnnotatedWith()
, которые могут обеспечить более простой фильтр.Ссылка выше объясняет это более подробно.
Другой простой способ - использовать несколько исходных папок для двух типов тестов - например, src/test/java
и src/it/java
при использовании Maven.Затем Eclipse позволит вам запускать / модульное тестирование непосредственно в родительских папках.
Для Maven вам потребуется добавить каталог исходного кода теста .