为什么我们应该在测试中使用setUp和tearDown而不仅仅是测试方法呢?

时间:2016-07-24 04:24:26

标签: java

假设我有以下简单代码:

public class SimpleOperations {
    public int square(int x){
        return x*x; 
    }
}

现在,为了测试上一个方法,以下方法非常有效:

public class Jtest {
    @Test
    public void test() {
        SimpleOperations test = new SimpleOperations(); 
        int output = test.square(5); 
        assertEquals(25, output);       
    }
}

为什么我们需要添加setUp和tearDown方法?像这样运行代码显示方法是否正确。 setUp / tearDown方法有什么优势可以增加测试?他们应该如何在这里?

2 个答案:

答案 0 :(得分:0)

您并不需要添加setUp和tearDown方法,但通常这样做是为了遵循“不要自己重复”(DRY)"软件开发原理。

有些人喜欢避免使用setUp和tearDown方法来保持测试被隔离,因此设置初始化的额外变量或对象不会干扰当前测试。

至于你的基本示例,我没有看到添加setUp和tearDown方法的任何优势。

答案 1 :(得分:0)

注意:这是一个稍长的答案。我会尽量保持简洁。

对于一个简单的示例,例如您所显示的示例,您无需进行任何设置或拆除测试。

但是,考虑一下您使用一堆依赖项测试复杂服务的情况,您将需要使用setup方法......以及...设置测试所需的对象。这将包括模拟您的依赖项,以便调用您的服务方法不会失败。然后,失败测试案例只会改变模拟以测试失败案例。

拆除将有助于清除测试创建的工件,以便下一个测试可以工作,而不必受到先前测试遗留的干扰。考虑清除作为运行测试的一部分添加的测试(内存中)数据库中的记录或测试用例本身。