如何在PIT突变测试中知道测试是否被JunitAssert错误终止

ua4mk5z4  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(195)

我正在使用PIT突变测试(1.6.7)和一个maven构建系统。有关于哪个测试杀死了突变体的信息。但是,我需要的是突变体是被JUnitAssert违反杀死的还是被任何隐式检查或运行时系统杀死的?PIT有可能吗?

w6mmgewl

w6mmgewl1#

如果你说的“隐式检查”是指编译时错误,那么在PIT下这是不可能的。不像一些早期的系统,它不会产生不可行的突变体。
唯一可以杀死变异体的方法是在运行测试时抛出未捕获的异常。PIT不区分AssertionFailedErrors和其他类型的异常,因此不可能判断测试是失败还是出错。

b4wnujal

b4wnujal2#

我在几年前实现了这样一个扩展,它可以区分Assert失败和隐式抛出的异常,尽管代码没有合并回Pitest。
您仍然可以在此处找到分支:https://github.com/hcoles/pitest/compare/master...nrainer:pitest:features/categorizeTestFailure
为了得到有意义的结果,你需要生成一个完整的变异矩阵(对于每个变异,执行覆盖它的所有测试,当第一个测试用例杀死变异时,不要停止)。这意味着变异的“杀死类型”取决于变异和测试用例。

相关问题