首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >junit中用于测试类的公共“前”和“后”

junit中用于测试类的公共“前”和“后”
EN

Stack Overflow用户
提问于 2014-06-25 08:32:37
回答 4查看 1.8K关注 0票数 4

是否可能有一个可以跨多个测试类使用的公共@Before@After固定装置?

我已经根据模块(库存、销售、购买等)将测试(分为类)进行了隔离。对于所有这些测试,用户登录是一个先决条件,目前我正在@Before中为每个类设置它。问题是当我需要更改用户id或密码时,我需要在每个类中进行更改。是否有一种方法可以编写可以在所有测试类中使用的@Before / @After?在这种情况下,测试套件有用吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-06-25 08:37:26

@Before@After适用于继承:

代码语言:javascript
复制
public abstract class AbstractTestCase {

    @Before
    public void setUp() {
        // do common stuff
    }
}

如果您想在每个测试用例中执行特定的操作,可以重写它:

代码语言:javascript
复制
public class ConcreteTestCase extends AbstractTestCase {

    @Before
    @Override
    public void setUp() {
        super.setUp();
        // do specific stuff
    }
}
票数 8
EN

Stack Overflow用户

发布于 2014-06-25 08:38:31

您可以为您的测试套件创建一个@ClassRule。对每个测试都调用它。关于如何在之前/之后应用ExternalResource,请参见API和示例。

票数 5
EN

Stack Overflow用户

发布于 2014-06-25 08:37:51

您可以在抽象父类中使用@Before注释,如下所示:

代码语言:javascript
复制
public class TestMe extends TestParent {
    @Test
    public void test() {
        System.out.println("Hi, here is a test. The username is: " + getUsername());
    }
}

与家长班:

代码语言:javascript
复制
public abstract class TestParent {
    private String username;

    @Before
    public void setUp() {
        username = "fred";
    }

    public String getUsername() {
        return username;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24403801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档