2017-01-03 17 views
1

現在、チュートリアル、説明、および例を検索しています。 私はさまざまな例を試してみましたが、さまざまなエラーが発生しました。 私の現在のエラー:Grailsを使用したドメインクラスのユニットテスト

| [ユニット]テストをコンパイルする際のエラーコンパイルエラー:起動に失敗しました:

と私のテストレポート。

ユニットテスト結果 - 概要 テストは実行されません。

マイ "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" 
    } 
} 

誰でも助けることができます。私はgrailsで新しいです。 ありがとう!

上記の問題への追加

、 示すように、私はクラスのContraintsを省略する場合:

class UserSpec extends Specification { 

私はこのエラーを思い付いた:

| 1ユニットテストを実行中... 1/1 |失敗:initializationError(org.junit.runner.manipulation.Filter) | java.lang.Exception:grailsテストターゲットと一致するテストが見つかりません パターンフィルタ[email protected] at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:35) at org (JUnitCore.java:138) | 1ユニットテストが完了し、0は0mで失敗した0s |エラーテストの実行中に致命的なエラーが発生しました:非nullプロパティが一時的な値を参照しています - 一時的なインスタンスは現在の操作の前に保存しなければなりません:newmyproject245.Order.product-> newmyproject245.Product;ネストされた例外はorg.hibernate.TransientPropertyValueExceptionです:非nullプロパティは一時的な値を参照します - 現在の操作の前に一時的なインスタンスを保存する必要があります: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" 

よろしくで発見します! (^ _〜)

関連する問題