私はGrailsの単体テストをgrails test-app :unit
と入力して実行し、すべての単体テストを実行しています。単一のテストを指定する方法はありますか?
編集:これまでのところ、誰もが基本的に同じことを言っていますが、私がそうすると、テストは実行されません。これ以上の考え?
結論: OK、テスト対象のクラスの名前ではなく、テストクラスの名前を使用していました。 Foo
の代わりにFooTests
を試してみると、完全に機能しました。
セットアップに問題がある可能性:
コマンドの順序が正しくありません。私にとってうまくいくのは:
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でこれらを試しましたが、どちらも同じように動作しました。
はいあります
grails test-app -unit YourController.testSomething
yourControllerはコントローラーで、testSomethingはテストメソッドです。
あなたは次のようなものを見るはずです
合格したテスト-レポートを表示
テストクラスが指定された場合foo.BarTests次のコマンドを使用して、そのクラスのテストのみを実行できます。
grails test-app :unit foo.Bar
または、以下を使用して、そのクラス内で単一のテストメソッドを実行します。
grails test-app :unit foo.Bar.testMethod
テストクラスの名前を指定するときは、単語「テスト」を含めないことに注意してください。
これは確かに機能します、私は毎日それを使用します
以下は単一のテストを実行します
grails test-app :unit ExampleControllerTests.testName
以下はすべてのExampleControllerTestsを実行します
grails test-app :unit ExampleControllerTests
grails test-app -unit com.package.YourController.testSomething
テストを実行するときにパッケージ名を含める必要があります