web-dev-qa-db-ja.com

Grailsプロジェクトのコマンドラインから単体テストを実行できますか?

私はGrailsの単体テストをgrails test-app :unitと入力して実行し、すべての単体テストを実行しています。単一のテストを指定する方法はありますか?

編集:これまでのところ、誰もが基本的に同じことを言っていますが、私がそうすると、テストは実行されません。これ以上の考え?

結論: OK、テスト対象のクラスの名前ではなく、テストクラスの名前を使用していました。 Fooの代わりにFooTestsを試してみると、完全に機能しました。

35
Eric Wilson

セットアップに問題がある可能性:

  • コマンドの順序が正しくありません。私にとってうまくいくのは:

    grails test-app -unit Foo(テストクラスはFooTests.groovyです)

  • grails.test.GrailsUnitTestCaseを明示的にインポートしていません。

    これをインポートしないと、テストの認識に問題がありました。私がGroovyTestCaseを拡張していたとき、物事は正常に動作しているように見えました。

実例

これは私のために働くテストのサンプルセットです。多分あなたはそれらとあなたのテストの間のいくつかの違いを見つけることができますか?

注:これらはすべてtestingプラグインをインストールして実行されます

test/unit/FooTests.groovy

import grails.test.GrailsUnitTestCase
class FooTest extends GrailsUnitTestCase {
    void testFoo() {
        assert true
    }

    void testBar() {
        assert true
    }
}

test/unit/BarTests.groovy

import grails.test.GrailsUnitTestCase
class BarTest extends GrailsUnitTestCase {
    void testFoo() {
        assert true
    }

    void testBar() {
        assert true
    }
}

test/unit/my/pkg/BazTests.groovy

package my.pkg

import grails.test.GrailsUnitTestCase

class BazTest extends GrailsUnitTestCase {
    void testFoo() {
        assert true
    }

    void testBar() {
        assert true
    }
}

コマンド:すべての単体テスト

$ grails test-app -unit
...

Starting unit test phase ...

-------------------------------------------------------
Running 6 unit tests...
Running test my.pkg.BazTest...PASSED
Running test FooTest...PASSED
Running test BarTest...PASSED
Tests Completed in 847ms ...
-------------------------------------------------------
Tests passed: 6
Tests failed: 0
-------------------------------------------------------

...
Tests PASSED - view reports in target/test-reports

コマンド:Foo単体テスト

$ grails test-app -unit Foo
...

Starting unit test phase ...

-------------------------------------------------------
Running 1 unit test...
Running test FooTest...PASSED
Tests Completed in 815ms ...
-------------------------------------------------------
Tests passed: 2
Tests failed: 0
-------------------------------------------------------

...
Tests PASSED - view reports in target/test-reports

コマンド:my.pkg.Bazユニットテスト

$ grails test-app -unit my.pkg.Baz
...

Starting unit test phase ...

-------------------------------------------------------
Running 2 unit tests...
Running test my.pkg.BazTest...PASSED
Tests Completed in 842ms ...
-------------------------------------------------------
Tests passed: 2
Tests failed: 0
-------------------------------------------------------

...
Tests PASSED - view reports in target/test-reports

Grails 1.2.3とGrails 1.3.4でこれらを試しましたが、どちらも同じように動作しました。

42
Rob Hruska

はいあります

grails test-app -unit YourController.testSomething

yourControllerはコントローラーで、testSomethingはテストメソッドです。

あなたは次のようなものを見るはずです

合格したテスト-レポートを表示

12
hvgotcodes

テストクラスが指定された場合foo.BarTests次のコマンドを使用して、そのクラスのテストのみを実行できます。

grails test-app :unit foo.Bar

または、以下を使用して、そのクラス内で単一のテストメソッドを実行します。

grails test-app :unit foo.Bar.testMethod

テストクラスの名前を指定するときは、単語「テスト」を含めないことに注意してください。

8

これは確かに機能します、私は毎日それを使用します

以下は単一のテストを実行します

grails test-app :unit ExampleControllerTests.testName

以下はすべてのExampleControllerTestsを実行します

grails test-app :unit ExampleControllerTests
3
Sudhir N
grails test-app -unit com.package.YourController.testSomething

テストを実行するときにパッケージ名を含める必要があります

3
Aaron Saunders