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 中列出的原因,但我仍然不知道哪里出了问题。
我试过了:
- 将 -Dthreads=1 选项添加到任何多线程问题的规则中
- 找不到任何唯一的系统属性,这两个测试失败了
- 正常情况下不忽略测试运行s
我还应该尝试哪些其他事情?或其他调试可能发生的情况的方法?
覆盖阶段测试失败的常见原因是
- PIT 提取测试未 included/are 排除在正常测试配置中
- 测试依赖于环境变量或其他 属性 在测试配置中设置,但未在 pitest 配置中设置
- 测试有一个隐藏的顺序依赖性,在正常测试期间不会显示 运行
- PIT 不喜欢您的技术堆栈中的某些东西 - 可能是 JUnit 测试 运行ner
听起来你已经消除了 1 和 2。所以剩下 3 和 4。
测试顺序依赖关系很难发现。如果对其中任何一个的回答是肯定的,那么您可能拥有一个。
- 您的代码库是否包含可变的静态状态? (例如在单身人士中)
- 您的测试是否命中了一个数据库(在内存中或其他地方),在该数据库中状态可能在测试之间持续存在?
- 您的测试会修改磁盘上的文件吗?
可能还有许多其他未在上面列出的原因。
如果您确信在您的代码库中不可能存在顺序依赖性,那么这些特定测试就会出现问题。
如果没有一些代码,很难猜出这可能是什么。你能post一个仍然失败的测试的简化版本吗?
在尝试 运行 PIT 突变测试时出现以下错误:
mutationCoverage failed: All tests did not pass without mutation when calculating line coverage. Mutation testing requires a green suite.
测试 运行 在我进行正常的测试构建时很好,但是在 运行 进行突变测试阶段时,它们应该会失败,但没有提供有关原因的详细信息。我已经查看了 PIT Testing FAQ 中列出的原因,但我仍然不知道哪里出了问题。
我试过了:
- 将 -Dthreads=1 选项添加到任何多线程问题的规则中
- 找不到任何唯一的系统属性,这两个测试失败了
- 正常情况下不忽略测试运行s
我还应该尝试哪些其他事情?或其他调试可能发生的情况的方法?
覆盖阶段测试失败的常见原因是
- PIT 提取测试未 included/are 排除在正常测试配置中
- 测试依赖于环境变量或其他 属性 在测试配置中设置,但未在 pitest 配置中设置
- 测试有一个隐藏的顺序依赖性,在正常测试期间不会显示 运行
- PIT 不喜欢您的技术堆栈中的某些东西 - 可能是 JUnit 测试 运行ner
听起来你已经消除了 1 和 2。所以剩下 3 和 4。
测试顺序依赖关系很难发现。如果对其中任何一个的回答是肯定的,那么您可能拥有一个。
- 您的代码库是否包含可变的静态状态? (例如在单身人士中)
- 您的测试是否命中了一个数据库(在内存中或其他地方),在该数据库中状态可能在测试之间持续存在?
- 您的测试会修改磁盘上的文件吗?
可能还有许多其他未在上面列出的原因。
如果您确信在您的代码库中不可能存在顺序依赖性,那么这些特定测试就会出现问题。
如果没有一些代码,很难猜出这可能是什么。你能post一个仍然失败的测试的简化版本吗?