Przypadki testowe JUnit w Javie: prosty samouczek JUnit 5.7.1 Hello World ze wszystkimi szczegółami w jednym
Opublikowany: 2019-10-30
Co to jest JUnit?
JUnit to prosty, wydajny framework open source do pisania i uruchamiania powtarzalnych testów. Uwielbiam testy JUnit. Podczas tworzenia projektu Java intensywnie używam JUnit do pokrycia kodu. Jest to instancja architektury xUnit dla frameworków do testów jednostkowych.
Funkcje JUnit obejmują:
- Asercje do testowania oczekiwanych wyników
- Oprawy testowe do udostępniania wspólnych danych testowych
- Przetestuj biegaczy do prowadzenia testów
W tym samouczku omówię punkt 1 i 3. Potrzebujesz poniższych zależności maven w swoim projekcie.
1 2 3 4 5 |
< dependency > < groupId > junit < / groupId > < artifactId > junit < / artifactId > < version > 4.12 < / version > < / dependency > |
Zacznijmy pisać kod.
Krok 1
Utwórz projekt CrunchifyJunitTest
i określ pakiet com.crunchify.junit
. Oto struktura pakietu do szybkiego odniesienia.

Krok 2
Kliknij prawym przyciskiem myszy CrunchifyJunitTest
=> Nowa klasa => CrunchifyJunitTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com . crunchify . junit ; /** * @author Crunchify * */ import static org . junit . Assert . assertEquals ; import org . junit . Test ; public class CrunchifyJunitTest { @ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 30 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello + World" , helloWorld ( ) ) ; } public int addition ( int x , int y ) { return x + y ; } public String helloWorld ( ) { String helloWorld = "Hello +" + " World" ; return helloWorld ; } } |
Krok 3
Eclipse zasugeruje i automatycznie doda zależność org.junit.Test
po wpisaniu @Test .

Krok 4
Aby przetestować test JUnit
- Kliknij prawym przyciskiem myszy klasę
- Kliknij Uruchom jako
- Kliknij
JUnit Test
Powinieneś zobaczyć coś takiego.

Krok-5
Spróbuj zmienić parametr oczekiwanej wartości metody z 30 => 300
iz Hello World => Hello -- World
i przetestuj ponownie.
1 2 3 4 5 6 7 8 9 |
@ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 300 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello -- World" , helloWorld ( ) ) ; } |

Krok-6
Teraz uruchommy ten sam przypadek testowy via other java
. Utwórz CrunchifyRunnerJUnit.java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package com . crunchify . junit ; import org . junit . runner . JUnitCore ; import org . junit . runner . Result ; import org . junit . runner . notification . Failure ; /** * @author Crunchify * */ public class CrunchifyRunnerJUnit { public static void main ( String [ ] args ) { Result result = JUnitCore . runClasses ( CrunchifyJunitTest . class ) ; for ( Failure failure : result . getFailures ( ) ) { System . out . println ( failure . toString ( ) ) ; } if ( result . wasSuccessful ( ) ) { System . out . println ( "Both Tests finished successfully..." ) ; } } } |
Krok-7
Uruchom CrunchifyRunnerJUnit.java
jako Java Application
.
Krok 8
W przypadku 1st code
(poprawny oczekiwany parametr), powinieneś zobaczyć dane wyjściowe w następujący sposób:
1 |
Both Tests finished successfully . . . |
Krok-9
W przypadku 2nd code
(nieprawidłowy oczekiwany parametr) powinieneś zobaczyć coś takiego:
1 2 |
testingCrunchifyAddition ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Addition Result : expected : < 300 > but was : < 30 > testingHelloWorld ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Hello World String : expected : < Hello [ -- ] World > but was : < Hello [ + ] World > |
I wszystko gotowe. Daj mi znać, jeśli napotkasz problemy z uruchomieniem tego kodu.
Dostępna adnotacja w przypadku testowym JUnit:
Adnotacja | Opis |
---|---|
@Testuj publiczną metodę void() | Adnotacja @Test wskazuje, że metoda jest metodą testową. |
@Przed publiczną metodą void() | Wykona metodę przed każdym testem. Ta metoda może przygotować środowisko testowe (np. odczytać dane wejściowe, zainicjować klasę). |
@Po publicznej metodzie void() | Wykona metodę po każdym teście. Ta metoda może oczyścić środowisko testowe (np. usunąć dane tymczasowe, przywrócić domyślne). |
@BeforeClass public void metoda() | Wykona metodę raz, przed rozpoczęciem wszystkich testów. Można to wykorzystać do wykonywania czasochłonnych czynności, na przykład do łączenia się z bazą danych. |
@AfterClass public void metoda() | Wykona metodę raz, po zakończeniu wszystkich testów. Może to służyć do wykonywania czynności porządkowych, na przykład do odłączania się od bazy danych. |
@Ignorować | Zignoruje metodę testową. Jest to przydatne, gdy kod bazowy został zmieniony, a przypadek testowy nie został jeszcze dostosowany. Lub jeśli czas wykonania tego testu jest zbyt długi, aby można go było uwzględnić. |
@Test (oczekiwany = Exception.class) | Nie powiedzie się, jeśli metoda nie zgłosi nazwanego wyjątku. |
@Test(czas oczekiwania=100) | Nie powiedzie się, jeśli metoda trwa dłużej niż 100 milisekund. |
Dostępne metody testu Assert:
Oświadczenie | Opis |
---|---|
niepowodzenie (ciąg) | Niech metoda się nie powiedzie. Może służyć do sprawdzania, czy pewna część kodu nie została osiągnięta. Lub mieć nieudany test przed zaimplementowaniem kodu testowego. |
AssertTrue (prawda) / AssertTrue (fałsz) | Zawsze będzie prawda/fałsz. Może służyć do wstępnego zdefiniowania wyniku testu, jeśli test nie został jeszcze zaimplementowany. |
attachTrue([komunikat], warunek logiczny) | Sprawdza, czy warunek logiczny jest prawdziwy. |
AssertsEquals ([komunikat ciągu], oczekiwany, rzeczywisty) | Testy, czy dwie wartości są takie same. Uwaga: w przypadku tablic sprawdzane jest odwołanie, a nie zawartość tablic. |
assersEquals([komunikat ciągu], oczekiwany, rzeczywisty, tolerancja) | Przetestuj zgodność wartości zmiennoprzecinkowych lub podwójnych. Tolerancja to liczba miejsc po przecinku, która musi być taka sama. |
attachNull([komunikat], obiekt) | Sprawdza, czy obiekt ma wartość null. |
attachNotNull([komunikat], obiekt) | Sprawdza, czy obiekt nie ma wartości NULL. |
attachSame([Ciąg], oczekiwana, rzeczywista) | Sprawdza, czy obie zmienne odwołują się do tego samego obiektu. |
attachNotSame([Ciąg], oczekiwana, rzeczywista) | Sprawdza, czy obie zmienne odnoszą się do różnych obiektów. |