각 테스트마다 다음 주석을 포함하는 Spring Junit Support로 실행되는 많은 테스트 케이스가 있습니다.Spring + JUnit Test Config 주석이있는 사용자 정의 주석을 작성하고 사용하는 방법은 무엇입니까?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
각 테스트 클래스에 이러한 주석을 모두 두는 대신 사용자 지정 주석을 만들어 사용하고 싶습니다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface SpringJUnit4TestConfig {
}
하지만이 사용자 정의 주석 봄 주입이 전혀 발생하지 않습니다 사용할 때.
@SpringJUnit4TestConfig
public class UserServiceTest
{
}
내가 여기에 누락 되었습니까?
추신 : 하지만 JUnit의 @RunWith와 Spring의 @Transactional, @ContextConfiguration 모두 @ Inherited .. 그래서 나는 그것이 작동해야한다고 생각했습니다. 하지만 지금은 해결 방법을 통해 해결할 수 있습니다. Based Abstract 클래스를 생성하고 그 모든 Annotation을 그 Base 클래스를 확장하는 테스트 케이스에 넣습니다.
@Target ({ElementType.TYPE}) 만 사용해야합니다. 필드 또는 매개 변수에이 코드를 사용하지 않습니까, 그렇지 않습니까? – Koitoer
당신이 옳습니다. 이 커스터마이징 어노테이션은 ElementType.TYPE에만 적용되어야합니다. –
나는 똑같이하고 싶었다. 질문과 답변 읽기'@ RunWith'를 제외한 모든 구성을 사용하는 주석을 작성하여 지금까지는 훌륭하게 작동하는 것 같습니다. 나는 각 TestCase 클래스에서'@RunWith (SpringJUnit4ClassRunner.class)'를 사용한다. – ykesh