您可以使用 JUnit 规则来做到这一点。
这里有一整篇博客文章专门针对您的问题,但简而言之,您可以执行以下操作:
- 创建一个实现
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();
}
}
};
}
}