找出哪个测试覆盖了哪一行雅各

2022-09-04 22:44:13

我正在一个巨大的代码库上运行集成测试。在覆盖率报告中,我想知道哪个测试覆盖了代码中的某一行。有没有用jacoco做这件事?


答案 1

以防万一有人仍然在寻找这个问题的解决方案。在我的情况下,我使用Jacoco编写了一个小演示,以生成一个覆盖报告,其中包含每个测试用例的覆盖行信息。基于此项目结构,我只需编写一个脚本即可自动逐个运行测试用例,并收集每个覆盖率报告,以获取每个测试覆盖哪些行的信息。请注意,此解决方案不是最佳解决方案(当测试用例数量很大时,它非常耗时),但它只是帮助我获得Jacoco测试用例的覆盖行信息。有关演示,请参阅 https://github.com/chenliushan/JacocoExample


答案 2

JaCoCo不会收集该信息,因此无法报告。

可以想象,您可以使用 JaCoCo 独立运行每个测试,并每次生成覆盖率报告,这样每个测试都会显示它测试的确切代码行。(然后,我想你必须用一个自定义的聚合报告来包装它,你可以从一个测试导航到下一个测试)。

我明白,对于庞大的代码库和大量的测试来说,这可能不切实际。另一个限制是,您无法获得“执行该行代码的所有测试是什么?

正如@Rogério所说,其他工具可能能够提供该功能。