Я обнаружил, что при выполнении нескольких gmock тестов с использованием базы данных и в памяти я получаю ошибки о том, что таблица уже существует. Кажется, что он запускает создание контекста Spring несколько раз, даже если он задан только один раз в данном классе теста как поле, которое будет использоваться всеми методами теста.
В идеале я хотел бы, чтобы несколько классов повторно использовали один и тот же контекст, но даже несколько методов с одним 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 {