规则是构成可重用代码(而不是从其继承)的JUnit方法。
参见https://github.com/junit-team/junit/wiki/规则
这是一个愚蠢的示例,但您会明白这一点。
import org.junit.rules.TestRule;import org.junit.runners.model.Statement;import org.junit.runner.Description;public class MyTestRule implements TestRule { @Override public Statement apply(final Statement statement, Description description) { return new Statement() { public void evaluate() throws Throwable { // Here is BEFORE_CODE try { statement.evaluate(); } finally { // Here is AFTER_CODE } } }; }}
然后,您可以像这样使用TestRule:
import org.junit.Rule;public class MyTest { @Rule public MyTestRule myRule = new MyTestRule();}
然后,将围绕您的每个测试方法执行BEFORE_CODE和AFTER_CODE。
如果每个类只需要运行一次代码,则将TestRule用作@ClassRule:
import org.junit.ClassRule;public class MyTest { @ClassRule public static MyTestRule myRule = new MyTestRule();}
现在,
BEFORE_CODE和
AFTER_CODE将围绕每个测试类的执行。
@Rule字段不是静态的,@
ClassRule字段是静态的。
@ClassRule也可以在Suite中声明。
请注意,您可以在一个测试类中声明多个规则,这就是在测试套件,测试类和测试方法级别上组成测试生命周期的方式。
规则是您在测试类(静态或非静态)中实例化的对象。您可以根据需要添加构造器参数。
高温超导
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)