确定基于Diffs运行的单元测试

时间:2010-10-20 18:48:23

标签: c unit-testing automation continuous-integration code-coverage

有没有人知道一个工具可以帮助确定应该根据提交的差异来运行哪些单元测试?

例如,假设开发人员提交的内容只会更改一行代码。现在,假设我有1000个单元测试,每个单元测试的代码覆盖率数据(或者可能只针对每个测试套件)。开发人员的单行更改不太可能需要运行所有1000个测试用例。相反,也许只有少数单元测试实际上接触到这种单线变化。是否有一个工具可以帮助确定哪些测试用例与开发人员的代码更改相关?

谢谢!

4 个答案:

答案 0 :(得分:2)

据我了解,单元测试的主要目的是覆盖整个代码库。当您对一个文件进行少量更改时,必须执行所有测试,以确保您的微更改不会破坏产品。如果你打破这个原则,你的单元测试没有什么理由。

PS。我建议将项目拆分为独立的模块/服务,并创建新的“集成单元测试”,这将验证它们之间的接口。但是在一个模块/服务中,所有单元测试都应该被执行为“全有或全无”。

答案 1 :(得分:0)

您可以使用make或类似工具通过为每个测试生成结果文件,并使结果文件依赖于它使用的源文件(以及单元测试代码)来执行此操作。

答案 2 :(得分:0)

我们的family of Test Coverage tools可以告诉您哪些测试会执行代码的哪些部分,这是您答案的基础。

当您重新检测代码库时,他们还可以告诉您需要重新运行哪些测试。实际上,它计算已经检测的源文件的差异,而不是使用提交差异,但它实现了你正在寻找的效果,恕我直言。

答案 3 :(得分:0)

您可以尝试使用'prove'运行它们,它具有基于文件修改时间的“新鲜”选项。查看prove manpage了解详情。

免责声明:我是C单元测试的新手,并没有使用过证明,但在我的研究中已经阅读了这个选项。