Framework JUnit zawiera 2 Assert
klasy (oczywiście w różnych pakietach), a metody w każdej z nich wydają się bardzo podobne. Czy ktoś może wyjaśnić, dlaczego tak jest?
Klasy, o których mówię to: junit.framework.Assert
i org.junit.Assert
.
Framework JUnit zawiera 2 Assert
klasy (oczywiście w różnych pakietach), a metody w każdej z nich wydają się bardzo podobne. Czy ktoś może wyjaśnić, dlaczego tak jest?
Klasy, o których mówię to: junit.framework.Assert
i org.junit.Assert
.
Odpowiedzi:
Stara metoda (JUnit 3) polegała na oznaczeniu klas testowych poprzez rozszerzenie junit.framework.TestCase
. To odziedziczyło junit.framework.Assert
siebie, a klasa testowa zyskała możliwość wywoływania w ten sposób metod asercji.
Od wersji 4 JUnit platforma używa Annotations
do oznaczania testów. Nie musisz już przedłużać TestCase
. Ale to oznacza, że metody asercji nie są dostępne. Ale możesz dokonać statycznego importu nowej Assert
klasy. Dlatego wszystkie metody asercji w nowej klasie są metodami statycznymi. Możesz więc zaimportować go w ten sposób:
import static org.junit.Assert.*;
Po tym imporcie statycznym możesz używać tych metod bez prefiksu.
Podczas przeprojektowania przenieśli się również do nowego pakietu, org.junit
który lepiej przestrzega normalnych konwencji nazewnictwa pakietów.
W rzeczywistości zachodzi zmiana funkcjonalna: org.junit.Assert
narzeka, jeśli użyjesz dwóch argumentów assertEquals()
z float
lub double
, a junit.framework.Assert
po cichu automatycznie ją zutoksyfikujesz.
Zrobiłem przybliżone porównanie kodu źródłowego i nie ma żadnych poważnych zmian. Dodano wiele komentarzy i dokonano org.junit.Assert
pewnych refaktoryzacji. Jedyną zmianą jest porównanie z Arrays
. Jest kilka porządków kodu, ale (imho) nie ma zmian funkcjonalnych .
W Android Studio (a więc także w IntelliJ) możesz globalnie wykluczyć junit.framework
z propozycji automatycznego importu.
Możesz ustawić zakres pomiędzy IDE
lub Project
. Jeśli nie masz projektów korzystających z JUnit 3, możesz bezpiecznie pozostać w zakresie IDE.
Ustawienie pozycji:
Preferencje -> Edytor -> Ogólne -> Automatyczny import
junit.framework.*
z menu importu statycznego wEditor->General->Auto Import->Exclude from Import and Completion
.