2011-10-12 48 views
0

我發現在運行多個gmock測試時使用和在內存數據庫中,我得到關於已經存在的表的錯誤。它似乎多次運行Spring上下文創建,儘管它只在給定的測試類中設置一次,作爲所有測試方法使用的字段。在Spring中使用GMock如何在多次測試中只設置一次spring context?

理想情況下,我想讓多個類重用相同的上下文,但即使使用單個GMockTestCase的多個方法重新創建spring上下文。

覆蓋Junit安裝方法沒有幫助。

我覺得這種行爲非直觀和不正確的,但可能有一些我不明白怎麼gmock或Groovy作品

class MyTest extends GMockTestCase { 

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring.test.xml") 

def mockRequest = mock(RenderRequest) 
def mockResponse = mock(RenderResponse) 

void testHandleRequest() { 

    mockRequest.getAttribute('javax.portlet.userinfo').returns(userInfo) 
    mockRequest.getRemoteUser().returns(userName) 

    play { 
     def mav = mainController.handleRenderRequestInternal(mockRequest, mockResponse) 
     assertEquals userName, mav.model.un 

一個解決辦法,我可以使用,但現在是不理想的是使用註釋技術和擴展彈簧測試類,像這樣:

@WithGMock 
@ContextConfiguration(locations = ["classpath:spring.dev.xml"]) 
class MyTest extends AbstractTransactionalJUnit4SpringContextTests { 
+0

你可以添加一些代表性的代碼示例? – bbaja42

回答

1

@BeforeClass將允許您構建每班一個上下文

+0

謝謝你會嘗試 – barrymac

0

你可以用這個

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/kontakteTest-portlet.xml"}) 
@TestExecutionListeners(value = {DependencyInjectionTestExecutionListener.class}) 
MockActionRequest request; 
MockActionResponse response; 

@Before 
public final void init() { 
    request = new MockActionRequest(); 
    response = new MockActionResponse(); 
} 

你可以多次使用它們。

+0

非常感謝你bummi。你非常有幫助。 – Ibo

相關問題