如何避免在JUnit测试用例中继承?

如何避免在JUnit测试用例中继承?,第1张

如何避免在JUnit测试用例中继承?

规则是构成可重用代码(而不是从其继承)的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中声明。

请注意,您可以在一个测试类中声明多个规则,这就是在测试套件,测试类和测试方法级别上组成测试生命周期的方式。

规则是您在测试类(静态或非静态)中实例化的对象。您可以根据需要添加构造器参数。

高温超导



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5500781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存