在我的每次集成测试中,我必须添加以下注释
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:test-context.xml")
@Transactional我在想,如果我可以创建一个自定义批注来对上面的批注进行分组,而不是添加3个批注,那么我只能创建一个。为此,我创建了以下注释。
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:test-context.xml")
public @interface IntegrationTest {
String[] value() default {};
}但是,当我在测试类上添加@IntegrationTest时,它不会加载上下文。有没有人能指点一下我错过了什么?
谢谢
发布于 2014-10-14 18:54:14
尝试分别添加@RunWith(SpringJUnit4ClassRunner.class)。
@RunWith(SpringJUnit4ClassRunner.class)
@IntegrationTest
public ControllerTest这是父类。
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:test-context.xml")
public @interface IntegrationTest此外,我会避免使用"@IntegrationTest“的名称,因为它是Spring Boot中的默认注释。
发布于 2014-08-01 07:41:48
这是行不通的,因为您的测试类不继承您的自定义批注上的批注。当JUnit运行你的测试类时,它找不到@RunWith注解,所以它使用标准的测试运行器,它对Spring一无所知。
您可以做的最好的事情就是创建您自己的自定义JUnit test runner,并将其附加到您的所有测试类,如@RunWith(MyIntegrationTestRunner.class)。那个自定义的测试运行器将不得不做所有的艰苦工作,加载spring上下文,并使您的测试类成为事务性的。除非您有学习JUnit和Spring内部工作原理的强烈愿望,否则这可能会带来更多的麻烦。
https://stackoverflow.com/questions/25070524
复制相似问题