K. *_*ddy 6 java junit spring annotations
我有大量的测试用例,它们运行Spring Junit支持,每个测试都有以下注释.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
Run Code Online (Sandbox Code Playgroud)
我没有在每个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 {
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用这个自定义注释弹簧注入根本没有发生.
@SpringJUnit4TestConfig
public class UserServiceTest
{
}
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?
PS:但是JUnit的@RunWith和Spring的@Transactional,@ ContextConfiguration都有@ Inherited ..所以我认为它应该可行.但是现在我通过一个解决方法来完成它.创建了一个基于抽象的类,并在其上放置了所有这些注释,并扩展了该基类的测试用例.
我认为这种方法不会起作用,就像@RunWithJUnit 注释一样,因此要使其起作用,JUnit 注释必须是可传递的。
当一个类用 @RunWith 注解或扩展一个用 @RunWith 注解的类时,JUnit 将调用它引用的类来运行该类中的测试,而不是 JUnit 中内置的运行器。我们在开发后期添加了此功能。虽然它看起来很强大,但随着我们了解人们如何真正使用它,我们预计运行器 API 会发生变化。目前内部的一些课程可能会被完善并公开。
因此测试 JUnit 测试调用似乎只适用于继承的类。
至于Spring,它支持配置位置的上下文配置继承,我不确定这是否适用于其他注释类型(如果您不这么认为,请指出我的文档)实际上,这可能适用于在测试配置类继承的情况下还有其他注释,因为@Transactional注释本身是在这种情况下声明的@Inherited。
因此,在这种情况下,由于缺少 JUnit 注释,它不会运行。
| 归档时间: |
|
| 查看次数: |
1830 次 |
| 最近记录: |