首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试方法应该测试什么?

测试方法应该测试什么?
EN

Software Engineering用户
提问于 2013-03-20 20:08:36
回答 3查看 276关注 0票数 1

假设我们使用类似xUnit的框架来测试一个类,这样就为被测试类创建了一个测试类。现在,单独的测试方法应该测试多少?

在测试方法和测试方法之间是否应该存在一对一的映射:

代码语言:javascript
复制
class TestMath {

    testSqrt() {
        assertEquals(Math.sqrt(4), 2);

        assertException(Math.sqrt(-2));
    }
}

还是每个“场景”都有一个测试方法比较好:

代码语言:javascript
复制
class TestMath {

    testSqrtOfPositiveNum() {
        assertEquals(Math.sqrt(4), 2);
    }

    testSqrtOfNegativeNum() {
        assertException(Math.sqrt(-2));
    }
}

哪种方法更好,两种方法的优缺点是什么?

EN

回答 3

Software Engineering用户

发布于 2013-03-20 21:19:04

第二种方法更好。如果其中一个测试失败,您将立即知道问题所在。如果您的测试方法检查了许多条件,如果其中一个条件失败了,您将不得不挖掘它来找出问题所在。

票数 5
EN

Software Engineering用户

发布于 2013-03-20 20:22:34

就我个人而言,我更喜欢场景方法,它更类似于代码的使用方式,也不太可能破坏一些底层代码工作方式的改变。

票数 4
EN

Software Engineering用户

发布于 2013-03-20 21:30:50

一般规则是每个测试都有一个断言。

至于你应该测试的水平。我喜欢将核心逻辑提取到逻辑引擎中,这些引擎可以使用低级别的方法级单元测试进行测试。但也有更高级别的测试运行在场景级别上。这样,高级别测试就能反映整个系统的功能,而低级别测试则确保所有路径都被正确测试。当某物破裂时,你可以看到它是在哪里破碎的,但也能看到它是如何在更高层次上显现的。

在你的例子中,我肯定会把它分成两个测试,这样你就可以准确地看到什么已经坏了,而不是仅仅知道什么东西坏了。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/191336

复制
相关文章

相似问题

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