Grails Тестирование взлеты - PullRequest
1 голос
/ 20 мая 2010

У меня есть два вопроса тестирования. Оба, вероятно, легко ответить. Во-первых, я написал этот тест в Grails:

void testCount() {
    mockDomain(UserAccount)

    new UserAccount(firstName: "Ken").save()
    new UserAccount(firstName: "Bob").save()
    new UserAccount(firstName: "Dave").save()

    assertEquals(3, UserAccount.count())
}

По какой-то причине я вернул 0 назад. Я забыл что-то сделать?

РЕДАКТИРОВАТЬ: О, я понимаю. Ограничения валидации были нарушены, поэтому они не были сохранены. Есть ли способ получить обратную связь здесь? Это действительно дурацкая вещь, которая случилась ....

Второй вопрос для тех, кто использует IDEA. Что я должен запускать - тесты IDEA на junit или цели grails? У меня есть два варианта.

Кроме того, почему IDEA говорит, что мои тесты пройдены, и он дает зеленый свет, даже если приведенный выше тест на самом деле не проходит? Это действительно сведет меня с ума, если мне придется проверять отчеты по тестам в html каждый раз, когда я запускаю свои тесты .....

Помощь

Ответы [ 3 ]

2 голосов
/ 20 мая 2010

Я всегда делаю object.save(failOnError: true) в тестах, чтобы избежать подобных сбоев. Это приводит к возникновению исключения в случае сбоя проверки. Даже без реальной базы данных в модульном тесте будет проверено большинство ограничений, хотя я предпочитаю использовать интеграционные тесты, если хочу проверить сложные отношения между объектами домена.

1 голос
/ 20 мая 2010

Лично я не нашел тесты Idea JUnit особенно полезными при работе с граалями.Скорее всего, хорошо использовать тест-бегун для «юнит-тестов».Для интеграционных тестов вы можете рассмотреть возможность установки цели ant в режиме «отладки» для запуска ваших тестов.Со временем запуск тестов начинает занимать так много времени, что я склонен запускать их исключительно из командной строки, чтобы избежать дополнительных накладных расходов, которые добавляет IntelliJ.

Что касается вашего модульного теста, я вполне уверен, что выМне нужно запустить интеграционный тест, чтобы получить счетчик, отличный от нуля.

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

Ваш тест, скорее всего, пройдет как интеграционный тест, при условии что ваши доменные объекты проверяются.

0 голосов
/ 20 мая 2010

добавить сброс: верно для вашего метода сохранения.

new UserAccount(firstName: "Ken").save(flush:true)
...

Grails устанавливает ручной режим сброса режима гибернации. Таким образом, изменение не сохраняется после возврата действия, а происходит до отображения представления. Это позволяет представлениям получать доступ к загруженным коллекциям и связям и предотвращает автоматическое сохранение изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...