Я пытаюсь проверить конструктор по умолчанию для класса, используя Junit:
// testing default const
public void testCaesarCipher() {
CaesarCipher c1 = new CaesarCipher();
if (c1 == null) {
assertTrue(false);
} else {
assertTrue(true);
}
}
Я получаю сообщение об ошибке "Мертвый код", как я могу это исправить?
Избавьтесь от проверки на то, что c1
является нулевым, что невозможно сделать. Конструктор никогда не может вернуть значение null
.
Вы можете проверить, что ваш конструктор не генерирует исключение - в этом случае просто:
public void testCaesarCipher() {
new CaesarCipher();
}
... Это хорошо. Тот факт, что конструктор возвращается без исключения исключения, является тем, что тест будет доказан, во время выполнения. (Присутствие теста - это проверка времени компиляции, конечно, без конструктора без параметров).
Я ожидаю, что ваши другие тесты будут нуждаться в вызове конструктора в любом случае, и в этом случае вы действительно думаете, что стоит попробовать этот тест?
Кроме того, если вы действительно хотите проверить, что какое-то значение не было null, вы должны использовать:
assertNotNull(c1);
Это намного яснее, чем ваш if
/else
. И в тех случаях, когда вы хотите программно сбой, просто вызовите fail()
а не assertTrue(false);
,
В этой позиции c1
не может быть null
. Избавьтесь от проверки if
.
Во-первых, вызов конструктора не может вернуть значение null
. Любое использование new...
вернет ненулевую ссылку.
Во-вторых, помните, что конструктор инициализирует ваш объект. То, что вы, вероятно, хотите проверить, - это то, что эта инициализация произошла так, как вы ожидали.
null
. Может быть, ваш юнит-тест должен проверить инициализацию объекта.
assertNotNull
, поэтому использованиеassertNotNull
было бы бессмысленным. Это проверка, которая никогда не сможет потерпеть неудачу независимо от того, что сделал ваш конструктор. Если вы действительно хотите проверить, что ваш конструктор возвращается без выдачи исключения, просто вызовите его, как показано в моем первом фрагменте кода.