【发布时间】:2014-03-28 12:04:00
【问题描述】:
我在一些 Spring 测试中使用了@Autowired MockHttpServletRequest。 TestNG 用作测试框架。如果我在课堂上只有一种测试方法,那效果很好。但是,如果有多个测试方法,只有第一次运行测试使用我的 MockHttpServletRequest。我举个例子来说明:
@WebAppConfiguration
@ContextConfiguration({"classpath:applicationContext.xml"})
public class FooTest extends AbstractTestNGSpringContextTests {
@Autowired
private MockHttpServletRequest servletRequest;
@Test
public void test1() {
assertEquals(((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(), servletRequest);
}
@Test
public void test2() {
assertEquals(((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(), servletRequest);
}
}
在本例中,test1() 通过,但test2() 失败!如果您单独运行测试方法,它们都会通过。如果一起运行,为什么一个测试会失败?
我试图挖掘代码,在测试方法运行后似乎对请求属性进行了某种重置,但我没有找到关闭它的方法。我的 Spring 版本是 3.2.8.RELEASE。
【问题讨论】:
标签: spring testng spring-test