我有大量使用 Spring Junit Support 运行的测试用例,每个测试都有以下注释。
@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 {
}
但是当我使用这个自定义注释时,Spring Injection 根本没有发生。
@SpringJUnit4TestConfig
public class UserServiceTest
{
}
我在这里缺少什么?
PS:但是JUnit的@RunWith和Spring的@Transactional,@ContextConfiguration都有@Inherited..所以我认为它应该可以工作。但现在我通过解决它来解决它。创建了一个基于抽象类并将所有这些注释和扩展该基类的测试用例放在上面。