Если возвращено значение null, тест Tennis Kata Java завершился неудачно

Я нашел тренировку Теннисного Ката для 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

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

Mạnh Quyết Nguyễn 10.06.2018 04:08

@ MạnhQuyếtNguyễn Большое спасибо, друг, я исправил математический пресс, в этом не было необходимости. Хотите посмотреть на мою другую проблему stackoverflow.com/questions/50783902/…

Wrekkler 10.06.2018 14:57

Я считаю, что эта ошибка утверждения пытается сообщить вам, что this.tennisGame не был инициализирован. В вашем примере нет кода, который присваивает значение этой переменной.

VoiceOfUnreason 10.06.2018 17:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
45
0

Другие вопросы по теме