Я начинаю копаться в анализе кода и мутантах. Я использую PITest в качестве плагина в своем проекте eclipse. Я столкнулся с этим мутантом, которого не могу убить. Предположим, у меня есть следующий код.
class Mutation{
public static void main(String [] args){
int i=0;
String SPECIAL_CHARS = "?!$@";
String password = "Something";
for (int pos = 0; pos < password.length(); pos++) {
char c = password.charAt(pos);
if(SPECIAL_CHARS.indexOf(c) < 0) {
i++;
}
}
}
}
Насколько я понимаю, если есть символ, который не принадлежит SPECIAL_CHARS
(скажем, (
), переменная i
будет увеличиваться. PITest сообщает о двух мутантах.
Со следующей информацией.
Я безуспешно пытался написать несколько тестов Junit, которые могут убить этого мутанта. Может кто-нибудь объяснить мне, как это возможно убить?
Теперь я знаю, что если мой пароль имеет ?
в качестве первого символа строки password
, проверка условной границы может быть отключена. Что с прибавкой? Что это значит?
i
? Ваш код вообще компилируется? Возможно, вы используете старую, скомпилированную версию. - person ta.speot.is   schedule 31.12.2017private static final String SPECIAL_CHARS = "?!$@";
это не может существовать внутриmain
. ideone.com/RhCJDS - person ta.speot.is   schedule 31.12.2017