我在我的一些Spring测试中使用了@Autowired MockHttpServletRequest
。 TestNG被用作测试框架。如果我在课堂上只有一种测试方法,这可以正常工作。但是,如果有多个测试方法,则只有第一次运行测试使用我的MockHttpServletRequest。让我用一个例子:使用自动装配的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。