29 Kasım 2020 Pazar

SpringBoot Test @SpringBootTest Anotasyonu properties Alanı

Giriş
Bazı bean'lerin testlerde yüklenmemesi için kullanılabilir

Örnek
@EnabledScheduling anotasyonlu sınıfların testlerde yüklenmemesini isteyebiliriz. Bu durumda @EnabledScheduling kullanan sınıfları yüklenmesini bir tane property değer ile kontrol etmek gerekir.

Kodumuzu şu hale getirelim. Böylece @EnableScheduling sadece io.reflectoring.scheduling.enabled property değeri true iken etkin olur
@Configuration
@EnableScheduling
@ConditionalOnProperty(
        name = "io.reflectoring.scheduling.enabled",
        havingValue = "true",
        matchIfMissing = true)
public class SchedulingConfiguration {
}
Test kodumuzda şöyle yapalım. SchedulingConfiguration sınıfının bean olarak yüklenmediği dolayısıyla da @EnabledScheduling anotasyonunun etkin olmadığı görülebilir.
@SpringBootTest(properties = "io.reflectoring.scheduling.enabled=false")
class SchedulingTest {

  @Autowired(required = false)
  private SchedulingConfiguration schedulingConfiguration;

  @Test
  void test() {
    assertThat(schedulingConfiguration).isNull();
  }
}
Örnek
Teste mahsus bir property değeri atamak için kullanılabilir. Şöyle yaparız
@SpringBootTest(properties = "foo=bar")
class SpringBootPropertiesTest {

  @Value("${foo}")
  String foo;

  @Test
  void test(){
    assertThat(foo).isEqualTo("bar");
  }
}

Hiç yorum yok:

Yorum Gönder