Я хочу, чтобы только часть подмножества моих тестовых методов выполнялась в производственной среде. Я комментирую такие методы тестирования с помощью аннотации @ProdAllowed
. Я также написал небольшой пользовательский JUnit бегун, который переопределяет метод runChild так он работает только для @ProdAllowed
методов в то время как на «PROD» окружающая среда:Отметить тест как проигнорированный в соответствии с условием
public class ProdAwareRunner extends BlockJUnit4ClassRunner {
public ProdAwareRunner(Class<?> klass) throws InitializationError {
super(klass);
}
@Override
protected void runChild(FrameworkMethod method, RunNotifier notifier) {
ProdAllowed annotation = method.getAnnotation(ProdAllowed.class);
String env = CreditCheckSuite.getEnv().trim();
if (annotation != null || "DEV".equalsIgnoreCase(env) || "UAT".equalsIgnoreCase(env)) {
super.runChild(method, notifier);
} else {
notifier.fireTestIgnored(null); // this probably needs to be changed
}
}
}
Это работает довольно хорошо, но я хочу немного больше - чтобы это пропущенной методы испытаний должны быть отмечены в Eclipse, поскольку игнорируется (сейчас они помечены как не работают, что это не совсем то, что я хочу)
встроенный механизм в JUnit [использует категории] (http://www.hascode.com/2012/ 12/приработки категоризированы-тесты-с использованием JUnit-Maven-и-аннотированный-тест-люкс /). – cheffe