1

grails をいじり始め、GORM を評価したいので、Spring Tool Suite を使用してドメイン クラスを作成しClientました。namevatNumberregNumber

私が追加した単体テストのコードは次のとおりです。

package pilot1

import grails.test.*

class ClientTests extends GrailsUnitTestCase {
    protected void setUp() {
        super.setUp()
    }

    protected void tearDown() {
        super.tearDown()
    }

    void testSomething() {
        def instances = []
        def myTestDomain = mockDomain(Client, instances)
        def client = new Client(name:"Test",vatNumber:"323",regNumber:"343")
        client.id =1;
        assertEquals client.name, "Test"
        client.save();
        def res = Client.findByName("Test")
        println instances
        println res
        //assertEquals 1, instances.size()
    }
}

結果は [] と null です。私は何を間違えましたか?

また、バックグラウンドで GORM (Hibernate) によって生成された SQL も確認したいと思います。Grails でそれを行う方法はありますか?

4

4 に答える 4

2

これをしないでください: client.id =1;

save() は ID を提供します。

save(flush:true) が必要な場合があります。

保存して使用してから、IDを使用して取得します。

次に、テストを行います。

このリンクが役に立つかもしれません: http://blog.springsource.com/2011/06/07/countdown-to-grails-1-4-unit-testing/

于 2011-06-13T20:44:13.307 に答える
1

まず、GORM自体を評価するべきではありません。Grailsを提供する人は、GORMをテストする責任を負います。確かに、とにかくそれを意味していなかったでしょう。

次に、findBy *()のテストは、通常、単体テストの問題ではありません。findBy *()をテストする必要がある場合は、すべてのfindBy *()応答インスタンスを収集し、そのリストを2番目の引数としてmockDomain()に渡す必要があります。この例では、mockDomain()を誤って使用しています。findBy*()呼び出しでインスタンスを受信するには、どのインスタンスをモックするかをmockDomain()に指示する必要があります。

于 2011-06-13T20:31:51.563 に答える
1

クライアントを保存すると、例外がスローされずに失敗する可能性があります。これにより、 res が null である理由が説明されます。以下のコードを試して、クライアントの保存が失敗したかどうか、およびその理由を確認してください。

client.save()
if(client.hasErrors()){
// Saving failed, look in client.errors to see the specific reason
}
于 2011-06-14T06:37:42.303 に答える
1

http://www.ibm.com/developerworks/java/library/j-grails10148/index.html

「前述したように、Grails はユニットと統合という 2 つの基本的なタイプのテストをサポートしています。この 2 つの間に構文的な違いはありません。どちらも同じアサーションを使用して GroovyTestCase として記述されています。違いはセマンティクスです。ユニット テストはテストするためのものです。統合テストを使用すると、完全な実行環境でクラスをテストできます. 率直に言って、すべての Grails テストを統合テストとして記述したい場合は、それで問題ありません. すべての Grails が作成します. -* コマンドは対応する統合テストを生成するため、ほとんどの人は既存のものを使用するだけです.すぐにわかるように、テストしたいもののほとんどは、とにかく完全な環境が稼働している必要があるため、統合テストかなり良いデフォルトです。」

于 2011-06-13T20:07:57.170 に答える