1

私の元の問題は、この投稿で完全に説明されています: TDD に従いたい:

  • 小さなテストを書く
  • 失敗するのを見て
  • 成功するのに十分なコードを書く
  • それが成功するのを見てください
  • 繰り返す

IntelliJ で Grails プロジェクトに取り組んでいます。通常の JUnit テストを作成するだけなら、上記の投稿ですべて解決します。

  • /test/unit に移動
  • 「class Xyz extends GroovyTestCase」クラスにいくつかのテスト コードを配置します。
  • Shift F10 を押す
  • JUnit レポートが 1 ~ 2 秒以内にポップアップ表示される

問題は、Easyb や Spock などの非常に優れた「英語で説明」するテスト セットアップの 1 つを使用したいということです。

私は何をしますか?Grails が作成してくれる自動生成された Test クラスから始めて、そこに Spock の要素を詰め込むのは魔法のようです。明らかに、「extends」を 2 回使用することはできません。これは私がやろうとしていることの要点を示していますか?

class Xyz extends GroovyTestCase extends spock.lang.Specification {

    //void testSomething() {
    //    fail "Implement me"
    //}

    def "length of Spock's and his friends' names"() {
        expect:
        name.size() == length

        where:
        name     | length
        "Spock"  | 5
        "Kirk"   | 4
        "Scotty" | 6
    }
}
4

2 に答える 2

3

groovyではなく、スポッククラスを拡張します。UnitSpec、ControllerSpec、IntegrationSpecなど、ソースコードに記載されているものから選択できます。残りはスポックが担当します。

于 2012-05-28T12:42:06.830 に答える
1

-「grails install-templates」を使用

- Tests テンプレートを次の行に沿ったものに変更します。

@artifact.package@

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

@TestFor(@artifact.testclass@)
class @artifact.name@ extends Specification {

}

- Spock (または通常の JUnit コード) でテスト コードを記述します。

-IntelliJ->実行->構成の編集。JUnit タイプの新しい構成を追加します。テストの種類: <All in package/All in UnitTest directory/All in one UnitTest class/etc.>

-(ショートカット: メソッド名またはクラス名の上にカーソルを置いて->ctrl-shift-F10)


私の最初の質問について:振り返ってみると、そのブログ投稿の「ディレクトリ内のすべてを実行する」部分に夢中になっていました。現在の IntelliJ DOES では、ディレクトリまたはプロジェクト全体ですべての JUnit テストを実行できます。

それを理解したら、次のステップは、Spock テストが JUnit テストであることを理解することでした。test/unit ディレクトリに「class Xyz extends Specification {}」クラスを作成し、Spock コードを入力して、Run as... JUnit を実行します。魔法!

于 2012-06-01T01:52:21.730 に答える