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

鲍比:

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

variantCoverage失败:在计算线覆盖率时,所有测试都没有通过测试而没有突变。变异测试需要绿色套件。

当我进行常规测试构建时,这些测试运行得很好,但在运行突变测试阶段时,它们据说会失败,但是没有提供原因的详细信息。我已经了解了PIT测试常见问题解答中列出的原因,但我仍然不知道可能出什么问题。

我试过了:

  • 将-Dthreads = 1选项添加到任何多线程问题的规则中
  • 找不到失败的夫妇测试所独有的任何系统属性
  • 在正常运行下测试不会被忽略

我还应该尝试其他什么方法?还是其他调试这里可能发生的情况的方法?

亨利:

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

  1. 不包括/不包括在常规测试配置中的PIT拾取测试
  2. 测试依赖于在测试配置中设置的环境变量或其他属性,但未在最重要的配置中设置
  3. 测试具有隐藏的顺序依赖性,在正常的测试运行期间不会显示
  4. PIT不喜欢您技术堆栈中的东西-可能是JUnit测试运行程序

听起来您已经淘汰了1和2,所以离开了3和4。

测试订单的依赖关系可能很难发现。如果答案是肯定的,那么您可能会有一个。

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

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

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

没有一些代码,很难猜测会是什么。您可以发布仍然失败的简化测试吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章