我们有一个Web应用程序(使用Grails / Groovy),我们编写单元测试和功能测试。
但是,我们没有编写集成测试。
通过单元测试,我们可以捕获一些小问题,并且它还有助于我们以模块化,简短易读的方式编写代码库。
功能测试显然有助于我们了解功能何时被破坏。
编写集成测试会得到什么?编写这些测试所花费的额外时间会带来什么好处?
答案 0 :(得分:2)
自:
http://martinfowler.com/bliki/TestPyramid.html
金字塔也争论要采取行动的中间层测试 通过应用程序的服务层,我称之为 SubcutaneousTests。这些可以提供许多优点 端到端测试但避免了处理UI的许多复杂问题 构架。在Web应用程序中,这将对应于测试 通过API层,而金字塔的顶部UI部分 对应于使用像Selenium或Sahi这样的测试..
答案 1 :(得分:2)
问题是“编写集成测试会得到什么?编写这些测试所花费的额外时间会带来什么好处?”
您的集成测试将确保您的组件与交叉问题一起工作,例如Web服务,数据库,会话等。您只需要很少的集成测试 - 作为@bagheera对TestPyramid的评论。要知道你是如何编写集成测试的,因为如果你过分了,那么运行所有这些测试真的很慢,并且更难以使用。当您将它们与单元测试进行比较时,编写它们并没有太大的好处。
Addtional: 你需要大量的单元测试 - 你已经拥有了它,这是一个好兆头。您不希望在此之间进行测试,这称为“脏混合”http://blog.stevensanderson.com/2009/08/24/writing-great-unit-tests-best-and-worst-practises/
答案 2 :(得分:1)
除了检查@Raedwald提到的应用程序的管道之外,集成测试非常适合测试您的持久层是否按预期工作。级联设置正确吗?如果在交易过程中出现问题,一切都会正常回滚吗?通过集成测试而不是功能测试直接检查这些东西通常要容易得多。
答案 3 :(得分:0)
我发现它们对于检查应用程序的“管道”非常有用。用于检查您的单元是否连接在一起,以及委托对象是否符合他们委派的方法的前提条件。