只运行相应源代码已更改的单元测试?

2022-09-03 07:09:18

我正在我们的 Jenkins CI 服务器中运行单元测试和 Selenium 测试。众所周知,在大型项目中运行测试需要很长时间。

有没有一个Java工具/框架只能触发各自源代码已更改的测试?这是因为并非每个对 SCM 的提交都会影响源代码的所有区域...

我使用Cobertura进行代码覆盖,使用Surefire进行报告。

编辑:我找到了Atlassian Clover,但我正在寻找一个免费的解决方案。


答案 1

我正在我们的 Jenkins CI 服务器中运行单元测试和 Selenium 测试。众所周知,在大型项目中运行测试需要很长时间。

这就是我要解决的问题。将项目拆分为多个逻辑单元(例如持久性层,服务层,Web层)并单独测试它们。这样,您只需要在Web层发生变化并且每个工件的构建时间变短时运行Selenium测试


答案 2

通常,如果不运行测试,就无法可靠地推断出哪个测试覆盖了哪些代码,即使运行测试,执行路径也可能不同于运行。我怀疑像这样的完美分析等同于停止问题

但是,您可以使用先前测试运行的覆盖率或测试用例文件中的导入来推断哪些测试可能会执行更改的代码。

最后,您确实希望运行整个测试套件,但是,您是对的,在更改的代码上运行测试更为重要,因为1。开发人员知道他们之前搞砸了2。如果您遇到很多更改,那么首先测试最新修订版并转到早期修订版只是为了将问题一分为二是有意义的。

众所周知,谷歌声称他们被黑客入侵的代码存储库在提交时运行单元测试,并且他们调整了测试框架以确定首先运行哪些测试。我不知道他们的改变是否是公开的。***

*视频谈话到会议演示,我不记得确切的名称或链接

**严格在提交后,如果测试开始失败,则自动回滚


推荐