2017-01-03 3 views
1

В настоящее время поиск учебников, объяснений и примеров. Я пробовал разные примеры и придумывал разные ошибки. Моя текущая ошибка:Тестирование модулей для доменных классов с использованием Grails

| Ошибка компиляции погрешности компиляции [unit]: запуск не выполнен:

и в моих протоколах испытаний. Он выводит это:

Результаты испытаний оборудования - Резюме Выполнено никаких испытаний.

Мой "UserSpec.groovy" код заключается в следующем:

package newmyproject245 

import grails.test.mixin.* 
import spock.lang.Specification 

@TestFor(User) 
class UserSpec extends ConstraintSpecification { 

    def setup() { 
     Expectations.applyTo User 
    } 

    def cleanup() { 
    } 

    void testShouldDoNothing() { 
     Expectations.applyTo User 

     user."password is not blank" 
     user."password is not nullable" 
     user."name is not blank" 
     user."name is not nullable" 
    } 

    void testEventNameConstraints() { 
     Expectations.applyTo User 
     def user = new User() 

     user."name is not blank" 
     user."name is not nullable" 
    } 
} 

Может кто-нибудь помочь. Я новичок в граале. Спасибо!

В дополнении к указанным выше проблемам, , когда я опустил контрсил в классе, как показано ниже:

class UserSpec extends Specification { 

Я подошел к этой ошибке:

| Выполнение 1 ... 1 из 1 | Ошибка: initializationError (org.junit.runner.manipulation.Filter) | java.lang.Exception: не найдено ни одного найденного теста соответствия grails шаблонный фильтр от [email protected] на org.junit.internal.requests.FilterRequest.getRunner (FilterRequest.java:35) at org .junit.runner.JUnitCore.run (JUnitCore.java:138) | Завершено 1 единичный тест, 1 не удалось в 0m 0s | Ошибка. Неустранимая ошибка. Недействительные свойства ссылаются на переходное значение. Временной экземпляр должен быть сохранен до текущей работы: newmyproject245.Order.product -> newmyproject245.Product; Вложенное исключение - org.hibernate.TransientPropertyValueException: Непустое свойство ссылается на переходное значение - переходный экземпляр должен быть сохранен до текущей операции: newmyproject245.Order.product -> newmyproject245.Product (Используйте --stacktrace, чтобы увидеть полную трассировку)

кто-то помочь. Опять же, спасибо!

ответ

0

У меня уже есть ответ. См код для справки:

UserSpec.groovy

package project101 

import grails.test.mixin.TestMixin 
import grails.test.mixin.support.GrailsUnitTestMixin 
import spock.lang.Specification 

/** 
* See the API for {@link grails.test.mixin.support.GrailsUnitTestMixin} for usage instructions 
*/ 
@TestMixin(GrailsUnitTestMixin) 
@TestFor(User) 
class UserSpec extends Specification { 

    def user 

    def setup() { 
     user = new User(firstName: 'FIRSTNAME', lastName: 'LASTNAME', address: 'Finland', username: 'user1', password: 'pass123', userType: 'ADMIN') 

    } 

    def cleanup() { 
     user = null 
    } 

    void "Test if User handles"() { 
     given: 
      setup() 
     when: "User field has null value" 
      user?.username = null 
     then: "Validation returns false" 
      user?.validate() == false 
      user?.errors?.hasFieldErrors('username') == true 
    } 
} 

И убедитесь, что dbCreate из тест среды является "создание дроп", чтобы избежать таких ошибок. Найдено в DataSource.groovy

test { 
     dataSource { 
      pooled = true 
      dbCreate = "create-drop" 

С уважением,

Спасибо! (^ _ ~)

Смежные вопросы