Test Driven Development z uzyciem JUnit 5. Czesc 3
Test Driven Development z uzyciem JUnit 5. Czesc 3
3. Przygotowanie aplikacji do zarządzania lotami dla TDD
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.6.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.6.0</version>
<scope>test</scope>
</dependency>
</dependencies>
Sprawdzając logikę biznesową, rozumiemy, że musimy sprawdzić scenariusze dodawania / usuwania pasażerów, udostępniając testy dla dwóch typów lotów i dwóch typów pasażerów. Zatem pomnożenie dwóch typów lotów przez dwa typy pasażerów daje w sumie cztery testy. Dla każdego z testów musimy zweryfikować możliwe operacje dodawania i usuwania.
public class AirportTest {
@DisplayName("Given there is an economy flight") #1
@Nested #1
class EconomyFlightTest { #1
private Flight economyFlight; #2
@BeforeEach #2
void setUp() { #2
economyFlight = new Flight("1", "Economy"); #2
} #2
@Test
public void testEconomyFlightRegularPassenger() {
Passenger mike = new Passenger("Mike", false); #3
assertEquals("1", economyFlight.getId()); #4
assertEquals(true, economyFlight.addPassenger(mike)); #5
assertEquals(1, economyFlight.getPassengersList().size()); #5
assertEquals("Mike", #5
economyFlight.getPassengersList().get(0).getName()); #5
assertEquals(true, economyFlight.removePassenger(mike)); #6
assertEquals(0, economyFlight.getPassengersList().size()); #6
}
@Test
public void testEconomyFlightVipPassenger() {
Passenger james = new Passenger("James", true); #7
assertEquals("1", economyFlight.getId()); #8
assertEquals(true, economyFlight.addPassenger(james)); #9
assertEquals(1, economyFlight.getPassengersList().size()); #9
assertEquals("James", #9
economyFlight.getPassengersList().get(0).getName()); #9
assertEquals(false, economyFlight.removePassenger(james)); #10
assertEquals(1, economyFlight.getPassengersList().size()); #10
}
}
}
W tym listingu:
- Deklarujemy zagnieżdżoną klasę testową EconomyFlightTest i nadajemy jej etykietę "Biorąc pod uwagę, że istnieje lot ekonomiczny" za pomocą adnotacji @DisplayName # 1
- Deklarujemy lot ekonomiczny i inicjujemy go przed wykonaniem każdego testu # 2
-
Podczas testowania, jak działa lot ekonomiczny ze zwykłym pasażerem, tworzymy Mike'a jako zwykłego pasażera # 3. Następnie sprawdzamy identyfikator lotu nr 4, czy możemy dodać Mike'a do lotu ekonomicznego i czy możemy tam znaleźć Mike'a nr 5 oraz czy możemy usunąć Mike'a z lotu ekonomicznego i czy Mike'a już tam nie ma # 6
- Podczas testowania, jak działa lot ekonomiczny z pasażerem VIP, tworzymy Jamesa jako pasażera VIP # 7. Następnie sprawdzamy identyfikator lotu nr 8, czy możemy dodać Jamesa do lotu ekonomicznego i czy możemy tam znaleźć Jamesa nr 9 oraz czy nie możemy usunąć Jamesa z lotu ekonomicznego i czy James nadal tam jest
- Postępujemy zgodnie z logiką biznesową lotu biznesowego i przekładamy ją na następujące testy
public class AirportTest {
[...]
@DisplayName("Given there is a business flight") #1
@Nested #1
class BusinessFlightTest { #1
private Flight businessFlight; #2
@BeforeEach #2
void setUp() { #2
businessFlight = new Flight("2", "Business"); #2
} #2
@Test
public void testBusinessFlightRegularPassenger() {
Passenger mike = new Passenger("Mike", false); #3
assertEquals(false, businessFlight.addPassenger(mike)); #4
assertEquals(0, businessFlight.getPassengersList().size()); #4
assertEquals(false, businessFlight.removePassenger(mike)); #5
assertEquals(0, businessFlight.getPassengersList().size()); #5
}
@Test
public void testBusinessFlightVipPassenger() {
Passenger james = new Passenger("James", true); #6
assertEquals(true, businessFlight.addPassenger(james)); #7
assertEquals(1, businessFlight.getPassengersList().size()); #7
assertEquals(false, businessFlight.removePassenger(james)); #8
assertEquals(1, businessFlight.getPassengersList().size()); #8
}
}
}
- Deklarujemy zagnieżdżoną klasę testową BusinessFlightTest i nadajemy jej etykietę "Biorąc pod uwagę, że istnieje lot biznesowy" za pomocą adnotacji @DisplayName # 1.
- Deklarujemy lot biznesowy i inicjujemy go przed wykonaniem każdego testu nr 2
- Podczas testowania, jak lot biznesowy działa ze zwykłym pasażerem, tworzymy Mike'a jako zwykłego pasażera # 3. Następnie sprawdzamy, czy nie możemy dodać Mike'a do lotu biznesowego nr 4 i czy próba usunięcia Mike'a z lotu biznesowego również nie ma żadnego efektu nr 5
- Podczas testowania, jak działa lot biznesowy z pasażerem VIP, tworzymy Jamesa jako pasażera VIP # 6. Następnie sprawdzamy, czy możemy dodać Jamesa do lotu biznesowego i czy możemy go znaleźć tam # 7 oraz że nie możemy usunąć Jamesa z lotu biznesowego i że James nadal tam jest # 8
Testy przebiegły pomyślnie.
Interesujesz się JUnit? Sprawdź nasze szkolenia
Catalin Tudose
Java and Web Technologies Expert