这个问题的目的是找到一个比我更好的解决方案。
我的集成测试有以下要求:
我的解决方案看起来像这样:
我只是从我的抽象测试类继承每个测试类:
package myPackage;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.junit.Before;
import org.junit.Rule;
import org.junit.rules.TestWatcher;
public abstract class FailFastTest {
private final static List<Class<?>> FAILED_CLASSES = new CopyOnWriteArrayList<Class<?>>() ;
private final Class<? extends FailFastTest> thatClass = this.getClass();
@Rule
public final TestWatcher onFailedRule = new TestWatcher() {
protected void failed(Throwable e, org.junit.runner.Description description) {
FAILED_CLASSES.add(thatClass);
};
};
@Before
public final void beforeMethod() {
final boolean failed = FAILED_CLASSES.contains(thatClass);
if(failed) {
System.out.println(thatClass + " FAILED. Aborting test.");
org.junit.Assume.assumeTrue(!failed);
}
}
}
有没有人有更好的主意? 我的问题: 我不能多次并行运行这样的测试类,因为classname表示跳过...
NO!这不是重复的! 我尝试编写以特定顺序使用不同(Web)服务的功能测试。问题“如何测试servlet?”是完全不同的!
反正。我切换到了TestNG。 TestNG支持我的所有要求,并且像魅力一样工作。我不再需要胶水代码了! : - )