私はコード解析と突然変異を調べ始めています。私はEclipseプロジェクトでPITestをプラグインとして使用しています。私はこの突然変異体に遭遇し、私は殺すことができません。次のコードがあるとします。 SPECIAL_CHARS
に属していないcharは((
と言う)がある場合条件付き境界突然変異体を殺す方法
class Mutation{
public static void main(String [] args){
int i=0;
String SPECIAL_CHARS = "[email protected]";
String password = "Something";
for (int pos = 0; pos < password.length(); pos++) {
char c = password.charAt(pos);
if(SPECIAL_CHARS.indexOf(c) < 0) {
i++;
}
}
}
}
限り私の理解が行くように、変数i
が増分します。 PITestは2つの変異体を報告する。以下の情報を
。
私は運がなく、この変異体を殺すことがあり、いくつかのJUnitのテストを書き込もうとしました。誰かが私にそれを殺すことが可能です方法を説明してくださいできますか?
パスワードが?
で、文字列の最初の文字がpassword
の場合、条件付き境界チェックが終了する可能性があります。増分はどうですか?どういう意味ですか?
「私はどこに宣言しましたか?あなたのコードはコンパイルされていますか?おそらくあなたはこれを古いコンパイル版で実行しています。 –
'private static final String SPECIAL_CHARS ="?!$ @ ";'これは 'main'の内部には存在しません。 https://ideone.com/RhCJDS –
それを無視してください、私は素晴らしい論理的な意味を持たずに私のプロジェクトからその文字列をコピーしました。これはちょうどアイデアを与えるためです – rockability