różnice między 2 klasami JUnit

Framework JUnit zawiera 2 Assert klasy (oczywiście w różnych pakietach), a metody na każdej z nich wydają się być bardzo podobne. Czy ktoś może wyjaśnić, dlaczego tak jest?

Klasy, o których mówię, to: junit.framework.Assert Oraz org.junit.Assert.

Author: Dónal, 2008-11-14

5 answers

Stara metoda (JUnit 3) polegała na oznaczaniu klas testowych przez rozszerzenie junit.framework.TestCase. To odziedziczyło junit.framework.Assert siebie i swoją klasę testową zyskało możliwość wywoływania metod assert w ten sposób.

Od wersji 4 JUnit, framework używa Annotations do oznaczania testów. Więc nie musisz już przedłużać TestCase. Oznacza to jednak, że metody assert nie są dostępne. Ale możesz dokonać statycznego importu nowej klasy Assert. Dlatego wszystkie metody assert w nowej klasie są metodami statycznymi. Więc ty można zaimportować go w ten sposób:

import static org.junit.Assert.*;

Po tym imporcie statycznym, możesz użyć tej metody bez prefiksu.

Przy przeprojektowaniu przenieśli się również do nowego pakietu org.junit, który jest zgodny z normalnymi konwencjami nazewnictwa pakietów.

 230
Author: Mnementh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-23 11:23:38

JUnit 3.X: junit.framework.Assert

JUnit 4.X: org.junit.Assert

Preferuj najnowszą wersję, szczególnie podczas uruchamiania JDK5 i wyższych z obsługą adnotacji.

 72
Author: ReneS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-10 13:20:02

Istnieje w rzeczywistości zmiana funkcjonalna: org.junit.Assert będzie narzekać, jeśli użyjesz dwuargumentowego assertEquals() z float lub double, podczas gdy junit.framework.Assert będzie cicho autobox go.

 17
Author: David Moles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-31 08:56:47

Uważam, że refaktoryzacja z junit.framework do org.junit i junit.framework.Assert jest utrzymywana dla wstecznej kompatybilności.

 5
Author: sblundy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-14 19:00:35

Zrobiłem przybliżone porównanie kodu źródłowego i nie ma żadnych poważnych zmian. Wiele komentarzy zostało dodanych w org.junit.Assert, a niektóre refaktoryzacje zostały wykonane. Jedyną zmianą jest porównanie z Arrays. Są pewne czyszczenie kodu, ale nie ma (imho) żadnych zmian funkcjonalnych .

 3
Author: guerda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-23 10:52:50