13 Aralık 2018 Perşembe

SpringTest @TestPropertySource Anotasyonu

Giriş
@PropertySource ile kardeştir. Test yaparken kullanılır.

Aynı zamanda @DynamicPropertySource anotasyonuna da bakabilirsiniz.

Bu anotasyonu her testin başına yazmak gereksiz, yoksa her test için context tekrar yüklenir. Eğer gerekiyorsa bir ata test sınıfına yazılabilir. 

Örnek - Yanlış Kullanım
Elimizde şöyle bir kod olsun. Şu 4 tane testte context 3 defa yüklenir. TestFour için tekrar yüklemez, çünkü TestThree ile aynı alanları kullanıyor.
@TestPropertySource({
    "classpath:x.properties",
    "classpath:y.properties"
})
public class TestOne{
//...
}
@TestPropertySource({
    "classpath:z.properties",
    "classpath:y.properties"
})
public class TestTwo{
//...
}
@TestPropertySource({
    "classpath:x.properties",
    "classpath:z.properties"
})
public class TestThree{
//...
}
@TestPropertySource({
    "classpath:x.properties",
    "classpath:z.properties"
})
public class TestFour{
//...
}
Örnek - Doğru Kullanım
Şöyle yaparız
@TestPropertySource({
  "classpath:x.properties",
  "classpath:y.properties",
  "classpath:z.properties"
})
public abstract class AbstractTest {
  //...
}

public class TestX extends AbstractTest {
  //...
}
Örnek - Doğru Kullanım
Şöyle yaparız.
@RunWith(SpringRunner.class)
@EnableConfigurationProperties
@TestPropertySource("classpath:../classes/conf/animal.yml")
@ContextConfiguration(classes={Animal.class, Animal.Cat.class})
public class AnimalTest {
  ...
}

Hiç yorum yok:

Yorum Gönder