首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring自定义注解集成测试

Spring自定义注解集成测试
EN

Stack Overflow用户
提问于 2014-08-01 07:20:57
回答 2查看 2.2K关注 0票数 3

在我的每次集成测试中,我必须添加以下注释

代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:test-context.xml")
@Transactional

我在想,如果我可以创建一个自定义批注来对上面的批注进行分组,而不是添加3个批注,那么我只能创建一个。为此,我创建了以下注释。

代码语言:javascript
复制
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration("classpath:test-context.xml")
public @interface IntegrationTest {
  String[] value() default {};
}

但是,当我在测试类上添加@IntegrationTest时,它不会加载上下文。有没有人能指点一下我错过了什么?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-10-14 18:54:14

尝试分别添加@RunWith(SpringJUnit4ClassRunner.class)。

代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
@IntegrationTest
public ControllerTest

这是父类。

代码语言:javascript
复制
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration("classpath:test-context.xml")
public @interface IntegrationTest

此外,我会避免使用"@IntegrationTest“的名称,因为它是Spring Boot中的默认注释。

票数 5
EN

Stack Overflow用户

发布于 2014-08-01 07:41:48

这是行不通的,因为您的测试类不继承您的自定义批注上的批注。当JUnit运行你的测试类时,它找不到@RunWith注解,所以它使用标准的测试运行器,它对Spring一无所知。

您可以做的最好的事情就是创建您自己的自定义JUnit test runner,并将其附加到您的所有测试类,如@RunWith(MyIntegrationTestRunner.class)。那个自定义的测试运行器将不得不做所有的艰苦工作,加载spring上下文,并使您的测试类成为事务性的。除非您有学习JUnit和Spring内部工作原理的强烈愿望,否则这可能会带来更多的麻烦。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25070524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档