Я нашел тренировку Теннисного Ката для TDD, но у меня небольшая проблема с оператором If.
public String getScore(){
if (server.getScore() >= 3 && receiver.getScore() >= 3){
if (Math.abs(receiver.getScore() - server.getScore()) >= 2){
return getLeadPlayer().getName() + " won";
} else if (Math.abs(server.getScore() - receiver.getScore()) >= 1) {
return "A" + ":" + receiver.getScoreDescription();
} else if (Math.abs(receiver.getScore() - server.getScore()) >= 1) {
return server.getScoreDescription() + ":" + "A";
} else {
return "40:40";
}
} else {
return server.getScoreDescription() + ":" + receiver.getScoreDescription();
}
Второй оператор else if возвращает значение null. Я понятия не имею, что не так.
@Test
public void receiverAdvantage() {
IntStream.rangeClosed(1, 3).forEach((Integer) -> {
server.winBall();
});
IntStream.rangeClosed(1, 4).forEach((Integer) -> {
receiver.winBall();
});
assertThat(tennisGame, hasProperty("score", is("40:A")));
}
«А» означает преимущество.
И результат теста:
java.lang.AssertionError:
Expected: hasProperty("score", is "40:A")
but: null
@ MạnhQuyếtNguyễn Большое спасибо, друг, я исправил математический пресс, в этом не было необходимости. Хотите посмотреть на мою другую проблему stackoverflow.com/questions/50783902/…
Я считаю, что эта ошибка утверждения пытается сообщить вам, что this.tennisGame не был инициализирован. В вашем примере нет кода, который присваивает значение этой переменной.




Как getScore относится к вашему тесту? Почему вы используете Math.abs? Это не правильно