私はjunit5とpitestを試しています。テスト中のコードは次のようになります。
// [...]
InputStream istream = this.getClass().getResourceAsStream("/" + file.getName());
if (istream == null) // 1. negated condition -> suvived
{
istream = Files.newInputStream(this.files.get(varname).toPath(), StandardOpenOption.READ);
}
try (BufferedReader reader = new BufferedReader(new InputStreamReader(istream, StandardCharsets.UTF_8))) // 2. removed call to java/io/BufferedReader::close → SURVIVED // 3. removed call to java/lang/Throwable::addSuppressed → SURVIVED
{
// [...]
} // 4. removed call to java/io/BufferedReader::close → SURVIVED
この小さなコード ブロック内に、4 つの生き残ったミューテーションを残しておきました。テストを追加/変更するか、コードをリファクタリングすることによって、強制終了が発生する可能性があります。
私の問題は、最初の突然変異が同等の突然変異であることです-それをリファクタリングする方法がわかりません。他の 3 つの変更は、try-resource-statement によって暗黙的に行われます。
だから私の質問は、この4つの突然変異をリファクタリングする方法ですか? 追加/変更されたテストによってそれらを殺すことはできないと確信しているからです。