7 Şubat 2019 Perşembe

SpringTest @SpringJUnitConfig Anotasyonu

Giriş
Şu satırı dahil ederiz
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
Spring 5 ile geliyor. İki tane şeyin bileşimi. Açıklaması şöyle.
@ExtendWith(SpringExtension.class) from JUnit 5 to run the test with the SpringExtension class and
@ContextConfiguration from Spring Testing to load the Spring context
@ContextConfiguration ile yüklenmesi istenilen classes ve initializers belirtilir.
classes @Configuration olarak işaretli sınıflardır,

initializers kendi ApplicationContextInitializer sınıfımızdır.

Bu anotasyonunun SpringBoot karşılığı sanırım @TestConfiguration anotasyonu.

classes Alanı
Yüklenmesi istenilen @Configuration olarak işaretli sınıf belirtilir.

Örnek
Şöyle yaparız
@SpringJUnitConfig(ScheduledIntegrationTest.Config.class)
public class ScheduledIntegrationTest {

  @Autowired
  MyTask task;

static class Config { @Bean public MyTask myTask() { return new MyTask(); } } @Test public void givenSleepBy100ms_whenWork_thenInvocationCountIsGreaterThanZero() throws InterruptedException { ... } }
Örnek
Elimizde şöyle bir kod olsun
@Configuration
@ComponentScan
public class DemoApplication {

  public static void main(String[] args) {
    var context = new AnnotationConfigApplicationContext(DemoApplication.class);
    ...
    }

  @Bean
  public Vertx vertx(VerticleFactory verticleFactory) {
    ...
  }

  @Bean
  public PgPool pgPool(Vertx vertx) {
    ...
  }
}
DemoApplication bir @Configurtion nesnesi. Bu sınıfı ve yarattığı bean'leri test etmek için şöyle yaparız
@SpringJUnitConfig(classes = DemoApplication.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class TestMainVerticle {

  @Autowired
  ApplicationContext context;


  @Test
  void testGetAll(VertxTestContext testContext) {
    ...
  }
}

Hiç yorum yok:

Yorum Gönder