喜在我的项目,我们有上百个测试cases.These测试用例是其被触发每个签入和发送邮件到我们的开发者group.This项目是相当大的,并一直为五年以上的构建过程的一部分。点击 现在,我们有这么多的测试案例,建立时间超过测试用例一个小时。有些不正常结构和重构他们后,我才得以大幅减少运行时间,但我们有上百个测试用例,并通过重构他们一个一个似乎有点过分。结果 现在我运行一些测试用例(这需要很长的执行)仅作为每夜构建的一部分,而不是每个签入的一部分。结果 我很好奇,其他人如何管理这一点。

有帮助吗?

解决方案

我相信这是在“修改代码的工作”,他说,如果你的测试套件的时间超过两分钟的时间会慢下来开发商太多,测试将开始越来越被忽视。听起来你都落入这个陷阱。

针对数据库运行测试用例?那么这很可能是你最大的性能问题的根源。作为一般规则,测试用例应该永远不会成为执行I / O,如果可能的话。依赖注入可以让你与模拟代码的数据库部分mock对象替换数据库对象。这让你测试的代码的,不用担心数据库是否设置正确。

我高度推荐与由迈克尔羽毛遗留代码的有效运作。他讨论了如何处理了很多,你似乎遇到了头痛,而无需一次性全部重构代码。

更新:

这是另一个可能的帮助,会是这样的NDbUnit。我没有用它尚未广泛,但它看起来很有希望: http://code.google.com / p / ndbunit /

其他提示

也许你可以考虑让你的Oracle数据库而是从RAM驱动器上运行呢?这将不需要很大,因为它会只包含测试数据

我们有大约1000的测试中,那些通过REST通信和击球数据库的很大比例。总运行时间为8分钟左右。一个小时似乎过高,但我不知道你在做什么,以及如何复杂的测试。

但我认为有一种方法可以帮助你。我们使用TeamCity的,它可以拥有多个生成代理一个不错的能力。你可以做的是只包含了一些测试每个子项目拆分测试项目分成子项目。你可以使用JNunit / NUnit的分类将它们分开。然后,将配置的TeamCity,使每个代理将建立只有一个类型的子项目。这样一来,你会得到的测试并行执行。随着几剂(你获得3免费的),你应该能够得到20分,这甚至可能是可以接受的。如果你把每个代理到虚拟机,你可能甚至不要求额外的机器,你只需要大量的RAM。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top