2

我正在用 JUnit 做一些集成测试。我有一个 xml 文件,我在其中声明了一些要注入的模板实体。在每次测试中,我都需要一个新的应用程序上下文,即没有测试应该依赖/耦合其他测试,所以setUp()我需要根据它们的默认起始值​​“重新初始化”这些实体。

我可以通过重新加载来实现,但是这样我就不能使用@Autowired注释了。

@Before
public void setUp(){        
    ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:entityTemplates-Context.xml");
    homeA = (Home)ctx.getBean("homeA");
}

有没有办法做到这一点并且仍然@Autowired用于这些实体?

4

2 回答 2

2

你看过 Spring 对集成测试的支持吗?

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/testing.html

我的团队将它用于我们需要 Spring 容器的集成测试。您每次测试都会获得一个新的上下文,尽管这会显着减慢测试速度。

于 2012-03-16T09:52:36.537 回答
0

您也可以像这样手动执行此操作:

  ...
  @Autowired
  HomeA homeA;

  @Before
  public void setUp() {
    // configures this test instance as a regular spring bean
    ctx.getAutowireCapableBeanFactory().autowireBean(this);

    // here homeA is available
  }
  ...
于 2013-07-18T10:23:23.440 回答