问候。
我有一个Roo生成的网络应用程序。我想测试我的控制器。所以我正在使用spring-test-3.2
使用STS 3.2
嵌入式Derby用于测试。
当控制器测试在两个集成测试之间进行楔入时,测试套件会失败 - 打破后面的集成测试。如果我@Ignore控制器测试,套件运行正常。这个集成测试既有Roo生成,也有我自己的测试方法
我搜索了很多 - 但不能解释这种行为。我怀疑交易没有正确回滚,但看起来一切都很好(日志很好)。
我只有一个空的控制器测试方法。我认为由于某种原因我的@ContextConfiguration是问题......
之前的集成测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/META-INF/spring /applicationContext*.xml")
@Transactional
public class CompanyServiceImplTest {
控制器测试:
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(value = {
"file:src/main/resources/META-INF/sprin/applicationContext.xml",
"file:src/main/webapp/WEB-INF/spring/webmvc-config.xml" })
@Transactional
之后的集成测试(此中断)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/META-INF/spring/applicationContext*.xml")
@Transactional
@RooIntegrationTest(entity = Status.class)
public class StatusIntegrationTest {
非常感谢任何指示......
--- cheerio atul
答案 0 :(得分:1)
这可能是由https://jira.springsource.org/browse/SPR-6121
引起的对我有用的解决方法是通过将@WebAppConfiguration添加到所有单元测试,并确保它们都具有相同的@ContextConfiguration,使所有单元测试使用相同的应用程序上下文。
你看起来像是在使用Spring Roo。为了避免编辑所有现有的单元测试,您可以为测试制作webmvc-config.xml的副本,重命名/移动它以匹配applicationContext * .xml模式。
可以使用以下方面将@WebAppConfiguration注释添加到现有测试中:
package com.foo.bar;
import org.springframework.test.context.web.WebAppConfiguration;
privileged aspect WebAppConfigurationAspect {
declare @type: com.foo.bar..*Test: @WebAppConfiguration;
}