栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何避免在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中声明。

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

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

高温超导



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508390.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号