2

我们有一个 Web 应用程序(使用 Grails/Groovy),我们编写单元测试和功能测试。

但是,我们不是在编写集成测试。

通过单元测试,我们可以发现一些小问题,而且它还可以帮助我们以模块化、简短和易读的方式编写代码库。

功能测试显然可以帮助我们了解某个功能何时被破坏。

编写集成测试会得到什么?花额外的时间编写这些测试有什么好处?

4

4 回答 4

3

问题是“编写集成测试会得到什么?花费额外时间编写这些测试有什么好处?

您的集成测试将确保您的组件与 Web 服务、数据库、会话等横切关注点一起工作。您只需要很少的集成测试 - 正如 @bagheera 对 TestPyramid 的评论。注意你是如何编写集成测试的,因为如果你太过分了,运行所有这些测试真的很慢,而且更难使用。当您将它们与单元测试进行比较时,编写它们并没有太多好处。

附加:你需要大量的单元测试——你已经有了这个,这是一个好兆头。你不想在这之间进行测试,这被称为“肮脏的混合体” http://blog.stevensanderson.com/2009/08/24/writing-great-unit-tests-best-and-worst-practices/

于 2013-06-16T13:05:52.723 回答
2

从:

http://martinfowler.com/bliki/TestPyramid.html

金字塔还主张通过应用程序的服务层进行测试的中间层,我称之为皮下测试。这些可以提供端到端测试的许多优点,但避免了处理 UI 框架的许多复杂性。在 Web 应用程序中,这对应于通过 API 层进行的测试,而金字塔的顶部 UI 部分对应于使用 Selenium 或 Sahi 之类的测试。

于 2013-06-15T06:03:28.550 回答
1

除了像@Raedwald 提到的那样检查您的应用程序的管道之外,集成测试还非常适合测试您的持久层是否按预期工作。级联设置是否正确?如果在事务期间发生故障,是否一切都正确回滚?使用集成测试而不是功能测试直接检查这些东西通常要容易得多。

于 2013-06-15T17:20:03.843 回答
0

我发现它们对于检查应用程序的“管道”很有用。用于检查您的单元是否连接在一起以及委托对象是否满足他们委托的方法的先决条件。

于 2013-06-14T21:55:24.467 回答