Framework JUnit zawiera 2 Assertklasy (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.Asserti org.junit.Assert.
Framework JUnit zawiera 2 Assertklasy (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.Asserti org.junit.Assert.
Odpowiedzi:
Stara metoda (JUnit 3) polegała na oznaczeniu klas testowych poprzez rozszerzenie junit.framework.TestCase. To odziedziczyło junit.framework.Assertsiebie, a klasa testowa zyskała możliwość wywoływania w ten sposób metod asercji.
Od wersji 4 JUnit platforma używa Annotationsdo 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 Assertklasy. 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.junitktóry lepiej przestrzega normalnych konwencji nazewnictwa pakietów.
W rzeczywistości zachodzi zmiana funkcjonalna: org.junit.Assertnarzeka, jeśli użyjesz dwóch argumentów assertEquals()z floatlub double, a junit.framework.Assertpo 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.Assertpewnych 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.frameworkz propozycji automatycznego importu.
Możesz ustawić zakres pomiędzy IDElub 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.