Junit: Тестирование конструктора по умолчанию, предупреждение о мертвом коде?

1

Я пытаюсь проверить конструктор по умолчанию для класса, используя Junit:

// testing default const
    public void testCaesarCipher() {
        CaesarCipher c1 = new CaesarCipher();
        if (c1 == null) {

            assertTrue(false);

        } else {
            assertTrue(true);
        }
    }

Я получаю сообщение об ошибке "Мертвый код", как я могу это исправить?

Теги:
junit

2 ответа

4

Избавьтесь от проверки на то, что c1 является нулевым, что невозможно сделать. Конструктор никогда не может вернуть значение null.

Вы можете проверить, что ваш конструктор не генерирует исключение - в этом случае просто:

public void testCaesarCipher() {
    new CaesarCipher();
}

... Это хорошо. Тот факт, что конструктор возвращается без исключения исключения, является тем, что тест будет доказан, во время выполнения. (Присутствие теста - это проверка времени компиляции, конечно, без конструктора без параметров).

Я ожидаю, что ваши другие тесты будут нуждаться в вызове конструктора в любом случае, и в этом случае вы действительно думаете, что стоит попробовать этот тест?

Кроме того, если вы действительно хотите проверить, что какое-то значение не было null, вы должны использовать:

assertNotNull(c1);

Это намного яснее, чем ваш if/else. И в тех случаях, когда вы хотите программно сбой, просто вызовите fail() а не assertTrue(false); ,

  • 1
    Спасибо. Значит, assertNotNull достаточно, чтобы убедиться, что конструктор работает так, как задумано?
  • 2
    @ RNI2013: Нет, внимательно прочитайте мой ответ: конструктор никогда не сможет вернуть assertNotNull , поэтому использование assertNotNull было бы бессмысленным. Это проверка, которая никогда не сможет потерпеть неудачу независимо от того, что сделал ваш конструктор. Если вы действительно хотите проверить, что ваш конструктор возвращается без выдачи исключения, просто вызовите его, как показано в моем первом фрагменте кода.
0

В этой позиции c1 не может быть null. Избавьтесь от проверки if.

Во-первых, вызов конструктора не может вернуть значение null. Любое использование new... вернет ненулевую ссылку.

Во-вторых, помните, что конструктор инициализирует ваш объект. То, что вы, вероятно, хотите проверить, - это то, что эта инициализация произошла так, как вы ожидали.

  • 0
    если, если не нужно, хотя для того, чтобы проверить работает тест?
  • 0
    @ RNI2013 Конструктор вызов не может возвращать null . Может быть, ваш юнит-тест должен проверить инициализацию объекта.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню