我正在用Grails进行开发。由于框架将引导数据并完全刷新弹出上下文,因此我发现我为服务编写了很多集成测试。让我重述一下:我发现我没有写服务的单元测试,只有集成测试。这是一个坏主意吗?我看到的唯一不足就是我的测试需要更长的时间才能运行。集成与单元测试
我在控制器上使用单元测试,如在控制器中测试各种应用程序流程,结果类型,重定向逻辑等。但我写的大多数测试都是集成测试。这似乎与传统的J2EE测试有所不同,大部分是单元测试。
编辑 - 要清楚,我不写集成测试,因为代码是如此复杂,只有集成测试才能做到。我编写集成测试,因为它更容易测试一切,因为框架给你很多。我嘲笑某些事情,比如如果一个服务与acegi authenticationService协作,我嘲笑它。我也会模拟任何时候我们与web服务进行交互,因为你必须为了得到一个没有特殊设置的测试。
集成测试可能比单元测试更脆弱。如果您发现自己主要编写集成测试,请考虑重构项目,以便更容易地进行单元测试。如果你的代码被编写为可测试的,你可能会发现单元测试比集成测试更容易编写,并且更稳定(不太容易中断)。集成测试适用于测试系统组件之间的交互,但它们并不总是提供足够的代码覆盖率,所以它们不能代替单元测试。 – 2010-08-02 22:41:15