我是否应该通过单元测试来覆盖代码,即使它已经被集成测试覆盖了?

时间:2017-02-27 22:59:45

标签: unit-testing mocking integration-testing use-case

让我们说我们有一些带有REST API的Web服务,为了说明,有一些与数据库有关的工作。在我看来,测试这个应用程序最基本的方法是集成测试,它从REST API顶部测试它,以验证它是否正常工作。但是使用一些模拟技术进行单元测试呢?是否真的有必要在专业开发中(当然有限的人力资源)用单元测试覆盖代码,即使它已经被集成测试覆盖了?

由于

1 个答案:

答案 0 :(得分:1)

好问题。当然,答案将以意见为基础,但希望它们基于实际的实际经验。

就我而言,多年来我编写了数千个JUnit / TestNG测试,我碰巧为Java开发了一个高级测试库(模拟+代码覆盖+集成测试)。

因此,IMO,当您已经拥有一个良好的集成测试套件时,编写单元测试并不需要也没有效率。

集成测试确实需要更长时间才能运行,但它们仍然应该足够快,以至于不鼓励开发人员运行它们。重要的是:如果开发人员在开发新代码或修改时仍能高效地运行一个测试,一个测试类等,那么它就没问题了。因此,避免使测试执行过于缓慢/痛苦的集成测试方法(例如,Selenium)。

针对集成测试的另一个批评是,它们使得更难找出测试失败的根本原因。但这在实践中不是一个足够大的问题。

Martin Fowler在他的Unit Test文章中提出了同样的两点。