В Java/Junit мне нужно проверить значение null с некоторым объектом. Существуют различные способы проверки состояния, но я использую assertTrue для большинства своих тестов. Когда я проверяю на nulls в assertTrue, EclEmma утверждает, что он тестирует только одну ветвь.
Когда я разрешаю оператор в переменную вручную (например, устанавливая результат в логическое и передавая его в assertTrue), покрытие кода считается завершенным в утверждении, но не в строке инициализации переменной.
Почему это происходит? Связано ли это с дополнительным байтовым кодом, который Java, по-видимому, добавляет, как упоминалось в http://sourceforge.net/apps/trac/eclemma/wiki/FilteringOptions? Любые решения (помимо использования других утверждений assert).
assertTrue:
assertTrue( myObject == null ); //1 of 2 branches
assertTrue:
boolean test = (myObject == null); //1 of 2 branches missing
assertTrue(test); // complete
assertNull:
assertNull( myObject ) //complete;