Korzystam z wygodnych adnotacji Spring Boot na moich testowych klasach, do testów integracyjnych.Jak połączyć wiele adnotacji testowych wiosennych w jednej adnotacji?
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Config.class)
@IntegrationTest
@Sql({"classpath:rollback.sql", "classpath:create-tables.sql"})
@Transactional
Znalazłem to dość brzydki skopiować/wkleić ten cały blok na każdej klasy testowej, więc stworzyliśmy własne @MyIntegrationTest
adnotacji
@SpringApplicationConfiguration(classes = Config.class)
@IntegrationTest
@Sql({"classpath:database-scripts/rollback.sql", "classpath:database-scripts/create-tables.sql", "classpath:database-scripts/insert-test-data.sql"})
@Transactional
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@interface MyIntegrationTest {
}
Jednak jeśli dodać @RunWith(SpringJUnit4ClassRunner.class)
w moim nowym adnotacji , wtedy JUnit będzie działał z domyślnym runnerem - co nie jest pożądane. Więc na razie muszę użyć dwóch adnotacji.
@RunWith(SpringJUnit4ClassRunner.class)
@MyIntegrationTest
Myślę, że to jest w porządku teraz, ale czy jest jakiś sposób, aby połączyć te adnotacje, więc będę mógł użyć pojedynczego adnotacji?
Sądzę, że to najlepsze, co można uzyskać ... http://docs.spring.io/spring/docs/current/spring-framework-reference/html/testing.html#integration- testing-annotations- meta – sodik
Ok Wkopiłem trochę w kod JUnit. Klasa 'AnnotatedBuilder' jest próbą wykrycia dowolnego Runnera za pomocą adnotacji i używają one:' RunWith adnotation = currentTestClass.getAnnotation (RunWith.class); ', więc nie będzie pobierał żadnej" adnotacji na adnotacji ". Nie wiem, dlaczego nie zostało to zaimplementowane, poprosi chłopaków o ich GitHub. – Guillaume