您可以使用JUnit Rules来做到这一点。
有专用精确您的问题here一个整体的博客文章,但总之,你执行以下操作:
- 创建一个实现
org.junit.rules.TestRule
接口的类。该接口包含以下方法:
Statement apply(Statement base, Description description);
的base
的说法实际上是你的测试,您可以通过调用base.execute()
运行 - 好,apply()
方法的实际返回Statement
匿名实例将这样做。在您的匿名Statement
实例中,您将添加逻辑以确定是否应该运行测试。请参阅下面的TestRule
实现的示例,除了执行测试之外,它不会执行任何操作 - 是的,它不是特别直接。
- 一旦你创建你的
TestRule
实现,那么你就需要将以下行添加到您的JUnit测试类:
@Rule
public MyTestRuleImpl conditionalTests;
记住,现场必须是公开的。
就是这样。祝你好运 - 正如我所说的,你可能不得不破解一些,但我相信在博客文章中有相当数量的解释。否则,应该有互联网上的其他信息(或JUnit源代码)。
下面是TestRule实现的一个简单示例,它不执行任何操作。
public abstract class SimpleRule implements TestRule {
public Statement apply(final Statement base, final Description description) {
return new Statement() {
public void evaluate() throws Throwable {
try {
base.evaluate();
} catch (Throwable t) {
t.printStackTrace();
}
}
};
}
}
它看起来像这个[答案](http://stackoverflow.com/a/1689261/376390)也可能是你的问题的解决方案。 – Marco