2013-01-09 52 views
0

我正在寻找一个工具,可以解决以下问题:智能单元测试后提交

我们的完整单元测试套件需要数小时才能完成。所以当程序员提交代码时,他会在几个小时后得到测试结果。我们想要实现的是缩短发现简单错误的时间。这可以通过智能选择几个单元测试来完成,这些单元测试将在提交之前/之后立即运行。当然,我们不想随机选择这个单元测试 - 我们希望单元测试更容易发现错误。

无需额外软件即可解决此问题的想法: 为每个单元测试编写代码覆盖率。知道哪些文件被哪些单元测试“触及”,如果用户改变了这些文件中的任何一个,我们可以选择这个单元测试。 这个解决方案有明显的缺点 - 我们必须手动存储和更新每个单元测试的覆盖文件列表。

我想知道,是否有任何工具可以帮助选择测试运行? 项目使用C++,并在Linux下工作。

+0

为什么不把这些信息包含在提交消息中?他们应该已经包含了正在解决的问题#,所以它也可以基于此。 –

+1

如果你的单元测试用一个好的makefile分解为独立的独立程序,你可以在不做'make clean'的情况下检查出所做的更改,然后运行必须重建的测试。 –

+0

在.NET世界中,实用程序ContinuousTests执行这种测试运行 –

回答

1

Michael Feathers在Working Effectively with Legacy Code中写道,需要10ms的单元测试是一个很慢的单元测试。你必须根除慢速测试。做不是基于覆盖猜测破解子集跑步者,最终会出错并咬你。

请记住单元测试和集成测试之间的区别。单元测试不涉及文件系统,通过网络进行通讯或与数据库通讯:这些都是集成测试。是的,集成测试通常比较容易编写,但这表明您的软件可以更好地进行分解 - 而且作为一个愉快的巧合,更容易测试。

我的怀疑是你的整合测试是那么长时间。将这些移动到一个单独的套房,比每次入住时都要频繁,比如每晚都要这样。