3 Ocak 2021 Pazar

SpringBoot Test AssertJ

Giriş
Şu satırı dahil ederiz
import static org.assertj.core.api.Assertions.*;
Açıklaması şöyle. Yani spring-boot-starter-test ile bazı kütüphaneler de otomatik olarak geliyor.
If you use the spring-boot-starter-test ‘Starter’ (in the test scope), you will find the following provided libraries:

JUnit — The de-facto standard for unit testing Java applications.
Spring Test & Spring Boot Test — Utilities and integration test support for Spring Boot applications.
AssertJ — A fluent assertion library.
Hamcrest — A library of matcher objects (also known as constraints or predicates).
Mockito — A Java mocking framework.
JSONassert — An assertion library for JSON.
JsonPath — XPath for JSON.
AssertJ bir test framework değil. JUnit içindeki testlere daha kolay assert cümleleri yazmak için. Belki aynı assert cümlelerini JUnit ile de yazmak mümkün, ancak AssertJ ile daha kolay ve kısa. Genel kullanım şuna benzer
assertThat(object1).isEqualTo(object2)
isEqualTo(), isNotNull(), isNull() en çok kullanılan metodlar

as metodu
Eğer assertion başarısız olursa, verilecek hata mesajını belirtir.

Örnek
Şöyle yaparız
@Test
public void testEqual() {
  Object object1 = new Object();
  Object object2 = object1;
  Object object3 = new Object();

  // failing assertion, with custom error message
  assertThat(object1).as("Checking whether objects are the same").isEqualTo(object3);
}
containsOnly metodu
Bir collection içinde sadece belirtilen elemanların olduğunu kontrol eder.

Örnek
Şöyle yaparız
@Test
public void testTolkienCharacterArrayList() {
  ArrayList<TolkienCharacter> characters = ...
  ...  
  TolkienCharacter aragorn = new TolkienCharacter("Aragorn", 62);
  TolkienCharacter frodo = new TolkienCharacter("Frodo", 32);  
  assertThat(characters)
    .filteredOn(character -> character.name.contains("o"))
    .containsOnly(aragorn, frodo);
}
isNotNull metodu
assertThat(..) içine verilen nesnenin null olmadığını kontrol eder
Örnek
Şöyle yaparız
@SpringBootTest
public class PaymentServiceTest {

  @Autowired
  private RestTemplate restTemplate;
  
  @Test
  public void shouldProcessPaymentForValidOrder() {
    var validOrder = Order
      .withCustomerId(123)
      .withItems(Item.withId("af12da"));
    
    var response = restTemplate.postForEntity("/payment", validOrder);
    assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
    assertThat(response.getBody().getPaymentTransactionId()).isNotNull();
  }
}
isNull metodu
assertThat(..) içine verilen nesnenin null olduğunu kontrol eder
Örnek
Şöyle yaparız
@SpringBootTest
public class PaymentServiceTest {

  @Autowired
  private RestTemplate restTemplate;
  
  @Test
  public void shouldRejectPaymentForOrderWithMissingCustomer() {
    var validOrder = Order
      .withItems(Item.withId("af12da"));
    
    var response = restTemplate.postForEntity("/payment", validOrder);
    assertThat(response.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    assertThat(response.getBody().getPaymentTransactionId()).isNull();
  }
}

Hiç yorum yok:

Yorum Gönder