Cel de-al cincilea articol din seria noastra despre, основанная на тестировании, для JUnit 5. De data aceasta ne uitam la cum putem вводит функциональные возможности folosind TDD.

5. Introducerea de noi functionsitati folosind TDD

Primele functionsitati noi pe care le vommplementa sunt un nou tip de zbor — premium — si politicile legate de acest tip de zbor. Exista o politica pentru aadauga un pasager: daca pasagerul este VIP, pasagerul ар trebui adaugat la zborul premium; altfel, cererea trebuie respinsa. Exista си о politica legata де inlocuirea unui pasager: daca este necesar, un pasager poate sa fie inlocuit де пе lista pentru zbor.

Временами с прибылью от faptul ca lucram cu TDD si sa facem mai multi refactoring — доступ к данным, уровень теста. Facem asta в духе правила трех, в соответствии с Доном Робертсом.

Prima oara cand faci ceva, fa acel lucru. A doua oara cand faci ceva Similar, ridici din sprancene la duplicare, dar mergi in continuare. A treia oara cand faci ceva like, faci refactoring.
Asa ca la trei abateri faci refactoring.

Dupa ce primim cerintele pentru apprearea acestui al treilea tip de zbor, este timpul sa grupam testele exente folosind JUnit 5 @Nested аннотация си апой са реализации zborul premium в аналогичном моде. Urmeaza apoi clasa провела рефакторинг AirportTest, чтобы получить новый код для получения премиум-класса.

общедоступный класс AirportTest{

@DisplayName("Учитывая, что рейс эконом-класса")

класс EconomyFlightTest{

частный рейс эконом-класса; №1

микрофон личного пассажира; №1

частный пассажир Джеймс; №1

economyFlight = new EconomyFlight("1"); №2

mike = новый пассажир («Майк», false); №2

james = new Passenger("Джеймс", правда); №2

@Вложенный #3

@DisplayName("Когда у нас есть постоянный пассажир") #3

класс RegularPassenger { #3

"Тогда вы можете добавить и удалить его из рейса эконом-класса") #4

public void testEconomyFlightRegularPassenger() {

утвердитьВсе(#5

"Подтвердить все условия для обычного пассажира №5

и эконом-класс», №5

() -> assertEquals("1", economicFlight.getId()), #5

() -> assertEquals(true, #5

economyFlight.addPassenger(mike)), #5

() -> assertEquals(1, #5

economyFlight.getPassengersList().size()), #5

() -> assertEquals("Майк", #5

economyFlight.getPassengersList() #5

.get(0).getName()), #5

() -> assertEquals(true, #5

economyFlight.removePassenger(mike)), #5

() -> assertEquals(0, #5

economyFlight.getPassengersList().size()) #5

@Вложенный #3

@DisplayName("Когда у нас есть VIP-пассажир") #3

класс VipPassenger { #3

@DisplayName("Тогда вы можете добавить его, но #4

не может убрать его с рейса эконом-класса") #4

public void testEconomyFlightVipPassenger() {

assertAll("Проверить все условия для VIP-пассажира №5

и эконом-класс», №5

() -> assertEquals("1", economicFlight.getId()), #5

() -> assertEquals(true, #5

economyFlight.addPassenger(james)), #5

() -> assertEquals(1, #5

economyFlight.getPassengersList().size()), #5

() -> assertEquals("Джеймс", #5

economyFlight.getPassengersList().get(0).getName()), #5

() -> assertEquals(false, #5

economyFlight.removePassenger(james)), #5

() -> assertEquals(1, #5

economyFlight.getPassengersList().size()) #5

@DisplayName("Учитывая служебный рейс")

класс BusinessFlightTest{

частный авиабизнесFlight; №1

микрофон личного пассажира; №1

частный пассажир Джеймс; №1

businessFlight = new BusinessFlight("2"); №2

mike = новый пассажир («Майк», false); №2

james = new Passenger("Джеймс", правда); №2

@Вложенный #3

@DisplayName("Когда у нас есть постоянный пассажир") #3

класс RegularPassenger { #3

@DisplayName("Тогда вы не можете добавить или удалить его #4

с делового рейса") #4

public void testBusinessFlightRegularPassenger() {

assertAll("Проверить все условия для обычного пассажира №5

и бизнес-рейс», №5

() -> assertEquals(false, #5

businessFlight.addPassenger(mike)), #5

() -> assertEquals(0, #5

businessFlight.getPassengersList().size()), #5

() -> assertEquals(false, #5

businessFlight.removePassenger(Майк)), #5

() -> assertEquals(0, #5

businessFlight.getPassengersList().size()) #5

@Вложенный #3

@DisplayName("Когда у нас есть VIP-пассажир") #3

класс VipPassenger { #3

@DisplayName("Тогда вы можете добавить его, но не можете удалить #4

с делового рейса") #4

public void testBusinessFlightVipPassenger() {

assertAll("Проверить все условия для VIP-пассажира №5

и бизнес-рейс», №5

() -> assertEquals(true, #5

businessFlight.addPassenger(Джеймс)), #5

() -> assertEquals(1, #5

businessFlight.getPassengersList().size()), #5

() -> assertEquals(false, #5

businessFlight.removePassenger(Джеймс)), #5

() -> assertEquals(1, #5

businessFlight.getPassengersList().size()) #5

In codul de mai sus:

  • Во вложенных классах EconomyFlightTest и BusinessFlightTest существуют группы, входящие в состав наследодателя, и получателя, от которого зависит время, которое вы можете получить, и уровень теста, который относится к определенному ацесте кампури, а также к тому, чтобы проверить, является ли юридический советник ученого совета № 1. Initializam aceste campuri ininte de executarea fiecarui test #2.
  • Introducem un nou вложенный уровень pentru testa diferitele tipuri de pasageri. Folosim JUnit 5 @DisplayName аннотация, созданная в соответствии с этическим стилем, может быть выражена более подробно, чем urmarit #3. Toate aceste etichete incep cu keywordul When.
  • Этикетка содержит аннотацию #4 @DisplayName @DisplayName. Toate aceste etichete incep cu keywordul Then.
  • Рефакторинг лица, чтобы проверить условия для общего доступа и метод утверждения всех JUnit 5 в группе, а также все условия, существующие ранее, заботятся о том, чтобы обеспечить доступность #5.

Поскольку фактический рефакторинг существует в тестовом режиме, его можно легко продолжить в различных стилях TDD, а также ввести бизнес-логику в расширенной версии. Daca rulam testele acum, putem urmari cu usurinta modul in care lucreaza si verifica бизнес-логики. Orice programator nou care s-ar alatura acestui proiect va putea sa foloseasca aceste teste pe post de documentatie!

Вреи са Inveti май multe despre aceasta technologie? Descopera cursurile noastre.

Каталин Тудоуз
Эксперт по Java и веб-технологиям

Первоначально опубликовано на https://www.luxoft-training.ro.