但是在某些时候你必须咬住子弹,并测试与你的数据库/文件/网络交互的类…
所以我的问题是:你做什么来测试这些课程?
我不觉得在我的CI服务器上安装数据库是一个很好的做法,但有其他选择吗?
我应该创建另一个服务器与另一个CI工具,所有的外部关系?
我应该像我的单位测试一样经常在我的CI上运行集成测试?
也许全职人员应该负责手动测试这些组件? (或负责创建测试环境并配置您的课堂与您的外部依赖关系之间的交互(如编辑应用程序的配置文件))
我想知道你在现实世界中怎么做?
I’d like to know how do you do in the
real world ?
在现实世界中,没有一个简单的处方可以做什么,但有一个指导性的事实:你想在引入错误/错误/测试失败之后尽快发现.让你成为你的指导一切都是技术.
一对常见的技巧:
>并行运行测试这是我的喜好我喜欢有两个系统,每个运行自己的CruiseControl *(我是一个提交者)的实例,一个运行单元测试快速反馈(<5分钟),而另一个系统不断运行集成测试.我喜欢这样做,因为它最大程度地减少了检入发生和系统测试可能捕获的延迟.有些人不喜欢的缺点是,您可能会遇到相同检查的多个测试失败,单元测试失败和集成测试失败.实际上我并不觉得这是一个主要的缺点.
>系统/集成测试仅在单元测试结束后才运行的生命周期模型.有一些工具,如AnthillPro *,这是围绕这种模型,这种方法是非常受欢迎的.在他们的模型中,他们将通过单元测试的工件,将它们部署到单独的登台服务器,然后在那里运行系统/集成测试.
如果您对此主题有更多疑问,我建议您使用Continuous Integration and Testing Conference(CITCON)和/或CITCON mailing list.
>那里有很多CI and build|process automation tools.这些只是他们类工具的代表.