Среда JUnit содержит 2 Assert
класса (очевидно, в разных пакетах), и методы каждого из них кажутся очень похожими. Кто-нибудь может объяснить, почему это так?
Классы я имею в виду , являются: junit.framework.Assert
и org.junit.Assert
.
Среда JUnit содержит 2 Assert
класса (очевидно, в разных пакетах), и методы каждого из них кажутся очень похожими. Кто-нибудь может объяснить, почему это так?
Классы я имею в виду , являются: junit.framework.Assert
и org.junit.Assert
.
Ответы:
Старый метод (из JUnit 3) заключался в маркировке тестовых классов путем расширения junit.framework.TestCase
. Это унаследовало junit.framework.Assert
себя, и ваш тестовый класс получил возможность вызывать методы assert таким образом.
Начиная с версии 4 JUnit, платформа использует Annotations
для маркировки тестов. Так что вам больше не нужно расширяться TestCase
. Но это означает, что методы assert недоступны. Но вы можете сделать статический импорт нового Assert
класса. Вот почему все методы assert в новом классе являются статическими методами. Таким образом, вы можете импортировать это так:
import static org.junit.Assert.*;
После этого статического импорта вы можете использовать эти методы без префикса.
При редизайне они также перешли на новый пакет, org.junit
который лучше следует обычным правилам именования пакетов.
На самом деле есть функциональное изменение: org.junit.Assert
будет жаловаться, если вы используете два аргумента assertEquals()
с float
или double
, в то время как junit.framework.Assert
автоматически отключит его.
Я сделал грубое сравнение исходного кода, и никаких серьезных изменений нет. Было добавлено много комментариев org.junit.Assert
и проведен рефакторинг. Единственное изменение - это сравнение с Arrays
. Есть некоторые очистки кода, но нет (imho) никаких функциональных изменений .
В Android Studio (и в IntelliJ тоже) вы можете глобально исключить junit.framework
из предложения автоматического импорта.
Вы можете установить область между IDE
илиProject
. Если у вас нет проектов, использующих JUnit 3, вы можете спокойно оставаться в области IDE.
Установка положения:
Настройки -> Редактор -> Общие -> Автоматический импорт
junit.framework.*
из выпадающего списка статический импорт вEditor->General->Auto Import->Exclude from Import and Completion
.