我在我的一些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。