Интеграционный тест Grails: классы домена не работают - PullRequest
2 голосов
/ 22 января 2012

Я создал простой плагин Grails в STS. Я использую плагин Spring Security Core, который добавил несколько классов домена. Я создал интеграционный тест, который просто создает экземпляр одного из классов домена (Пользователь) и сохраняет его. При выполнении интеграционного теста я получаю следующую ошибку:

Failure:  testSomething(com.resonance.rwp.core.tests.UserServiceTests)
groovy.lang.MissingMethodException: No signature of method: com.resonance.rwp.core.domain.User.save() is applicable for argument types: () values: []
Possible solutions: save(), save(boolean), save(java.util.Map), wait(), any(), wait(long)
    at com.resonance.rwp.core.tests.UserServiceTests.setUp(UserServiceTests.groovy:14)

Я не понимаю, похоже, что классы домена по какой-то причине не отображаются через GORM. Все, с чем я сталкивался, включает людей, пытающихся использовать GORM в модульных тестах, но я определенно провожу интеграционное тестирование. Любая помощь очень ценится.

Вот источник, это действительно просто:

class UserServiceTests {

@Before
void setUp() {
    User user = new User(username: "Test");
    user.save();
}

@After
void tearDown() {
    // Tear down logic here
}

@Test
void testSomething() {
    fail "Implement me"
}
}

Я также пытался перенести все в сам тест. Очевидно, что сбой метода setUp.

Ответы [ 4 ]

2 голосов
/ 16 июня 2013

У меня тоже была эта проблема на вновь сгенерированном плагине, и я обнаружил, что проблема в том, что вновь сгенерированные плагины не зависят от спящего режима.Я добавил следующее в BuildConfig.groovy:

plugins {
    runtime ":hibernate:$grailsVersion"
}

Это привело к устранению проблемы.Я не достаточно знаком с Grails, чтобы иметь какие-либо теории относительно того, почему сообщение об ошибке намекает на фактическое существование методов персистентности, таких как save, но, по крайней мере, я заставил его работать:)

http://jira.grails.org/browse/GRAILS-9163?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

1 голос
/ 13 февраля 2012

Только что возникла проблема, как у вас при создании некоторых интеграционных тестов с Grails 2.0.0

Интеграционные тесты не были выполнены при запуске как grails test-app, но сработал при запуске как grails test-app --integration.К моему удивлению, юнит-тесты каким-то образом загрязняли тестовую среду.Еще более удивительно, что удаление некоторых автоматически сгенерированных (то есть пустых) модульных тестов добилось цели!Теперь тесты проходят с обеими командами.

Обсуждалась эта тема в еще одном вопросе , запрашивающему требовалось перенести свои юнит-тесты в Grails 2.0.0 написания тестов (т.е. JUnit 4 и тестовых миксов Grails), чтобы сделать его интеграционные тесты работающими, вы можете увидеть, как это сделать в документах .

Я постараюсьподайте отчет об ошибке, если я смогу воспроизвести в минимальном приложении, созданном для этой цели.Надеюсь, это поможет!

0 голосов
/ 05 января 2013

Если у вас есть один тест, который все еще использует:

extends GrailsUnitTestCase 

, вы увидите это.Вам нужно поменять все юнит-тесты на тесты на основе аннотаций в граалях 2 +

http://grails.org/doc/latest/guide/testing.html#unitTesting

0 голосов
/ 28 января 2012

Похоже, что преобразования Grails AST в этом случае по какой-то причине не выполняются. Я предполагаю, что вы используете Grails 2.0, но вы на самом деле не сказали. Попробуйте запустить чистую сборку внутри STS (Project -> Clean ...).

Я попробовал это в простом проекте Grails 2.0. Похоже, это работает для меня. Я думаю, что вам лучше всего создать простой проект Grails, в котором есть эта проблема, экспортировать его в виде почтового индекса и поднять вопрос о jira. https://issuetracker.springsource.com/browse/STS

...