我是突变测试的新手。我使用 Stryker 库来生成和运行测试。但是一些突变打破了代码表达式之间的整个逻辑。例如,
// 真实代码
if (!(typeof age == 'number' && Math.trunc(age) == age)) throw new Error('age must be a whole number');
// 来自 Stryker 的变异代码
if (!(true && Math.trunc(age) == age)) throw new Error('age must be a whole number');
由于快捷方式 And 运算符,永远不会执行If typeof age == 'number'
is false 。但是 Stryker 创建了一个突变体,它假定必须在何时执行,并且某些测试用例必须失败。Math.trunc(age) == age
&&
Math.trunc(age) == age
typeof age == 'number'
false
这种情况正常吗?在这种情况下我该怎么办?我应该忽略突变体吗?
谢谢。