JUnit 测试通过但 PIT 表示该套件不是绿色的

JUnit tests pass but PIT says the suite isn't green

在尝试 运行 PIT 突变测试时出现以下错误:

mutationCoverage failed: All tests did not pass without mutation when calculating line coverage. Mutation testing requires a green suite.

测试 运行 在我进行正常的测试构建时很好,但是在 运行 进行突变测试阶段时,它们应该会失败,但没有提供有关原因的详细信息。我已经查看了 PIT Testing FAQ 中列出的原因,但我仍然不知道哪里出了问题。

我试过了:

我还应该尝试哪些其他事情?或其他调试可能发生的情况的方法?

覆盖阶段测试失败的常见原因是

  1. PIT 提取测试未 included/are 排除在正常测试配置中
  2. 测试依赖于环境变量或其他 属性 在测试配置中设置,但未在 pitest 配置中设置
  3. 测试有一个隐藏的顺序依赖性,在正常测试期间不会显示 运行
  4. PIT 不喜欢您的技术堆栈中的某些东西 - 可能是 JUnit 测试 运行ner

听起来你已经消除了 1 和 2。所以剩下 3 和 4。

测试顺序依赖关系很难发现。如果对其中任何一个的回答是肯定的,那么您可能拥有一个。

  • 您的代码库是否包含可变的静态状态? (例如在单身人士中)
  • 您的测试是否命中了一个数据库(在内存中或其他地方),在该数据库中状态可能在测试之间持续存在?
  • 您的测试会修改磁盘上的文件吗?

可能还有许多其他未在上面列出的原因。

如果您确信在您的代码库中不可能存在顺序依赖性,那么这些特定测试就会出现问题。

如果没有一些代码,很难猜出这可能是什么。你能post一个仍然失败的测试的简化版本吗?