Первый мутант эквивалентен только в том случае, если наблюдаемое поведение функции одинаково с обеих сторон оператора if.
Для этого случая 'file' и 'this.files.get (varname)' должны будут всегда преобразовывать в один и тот же входной поток.
Если ониможет разрешить разные входные потоки, тогда можно создать тест для уничтожения мутанта.
Если они всегда будут разрешать одно и то же, тогда зачем нужна первая ветвь?Если он не существует для какой-либо проблемы, которая не может быть проверена (например, производительность), тогда первая ветвь не требуется, и поток всегда может быть разрешен из 'this.files.get (varname) .toPath ()'.
Другие мутанты немного сложнее.
Они эквивалентны, поскольку имеют дело с проблемой, не поддающейся проверке (управление ресурсами).Что еще более важно, они являются «мусорными», так как они являются конструкцией компилятора и не отображаются непосредственно обратно в код.
Pitest пытается отфильтровать подобные нежелательные мутанты, но фильтрация несовершенна, поскольку они не совсем понятны.идентифицируется как конструкции компилятора в байтовом коде.
Релиз 1.4.8 правильно отфильтровывает все эти мутанты, если я вставлю ваш фрагмент в файл и отредактирую его так, чтобы он компилировался.Если вы можете вставить полностью скомпилируемый класс, который воспроизводит проблему, я могу увидеть, можно ли настроить фильтрацию, чтобы подобрать этих мутантов в контексте.