12

複数のテスト スイートを含む既存のプロジェクトに Gradle (1.4) を追加しようとしています。にある標準ユニット テストsrc/test/javaは正常に実行されましたが、 にある JUnit テストを実行するタスクの設定に問題がありますsrc/integration-test/java

実行すると、 のクラスでgradle intTestいくつかのcannot find symbolエラーが発生しますsrc/main。これにより、依存関係が正しく設定されていないと思います。intTestJUnit 統合テストを実行するようにセットアップするにはどうすればよいですか?

build.gradle

apply plugin: 'java'

sourceCompatibility = JavaVersion.VERSION_1_6

sourceSets {
    integration {
        java {
            srcDir 'src/integration-test/java'
        }
        resources {
            srcDir 'src/integration-test/resources'
        }
    }
}

dependencies {
    compile(group: 'org.springframework', name: 'spring', version: '3.0.7')

    testCompile(group: 'junit', name: 'junit', version: '4.+')
    testCompile(group: 'org.hamcrest', name: 'hamcrest-all', version: '1.+')
    testCompile(group: 'org.mockito', name: 'mockito-all', version: '1.+')
    testCompile(group: 'org.springframework', name: 'spring-test', version: '3.0.7.RELEASE')

    integrationCompile(group: 'junit', name: 'junit', version: '4.+')
    integrationCompile(group: 'org.hamcrest', name: 'hamcrest-all', version: '1.+')
    integrationCompile(group: 'org.mockito', name: 'mockito-all', version: '1.+')
    integrationCompile(group: 'org.springframework', name: 'spring-test', version: '3.0.7.RELEASE')
}


task intTest(type: Test) {
    testClassesDir = sourceSets.integration.output.classesDir
    classpath += sourceSets.integration.runtimeClasspath
}

詳細: Gradle 1.4

解決策:統合テスト ソース セットのコンパイル クラスパスを設定していませんでした (以下を参照)。私のコードではsourceSets.test.runtimeClasspath、「integrationCompile」の依存関係が重複しないように、コンパイル クラス パスを に設定しています。

sourceSets {
    integrationTest {
        java {
            srcDir 'src/integration-test/java'
        }
        resources {
            srcDir 'src/integration-test/resources'
        }
        compileClasspath += sourceSets.main.runtimeClasspath
    }
}
4

3 に答える 3

9

「統合」sourceSet は、そのコンパイルおよびランタイム クラスパスを構成していません。そのため、メインのソースセットからクラスを見つけることができません。次の方法で、コンパイルおよび実行時のクラスパスを構成できます。

sourceSets {
    integTest {
        java.srcDir file('src/integration-test/java')
        resources.srcDir file('src/integration-test/resources')
        compileClasspath = sourceSets.main.output + configurations.integTest
        runtimeClasspath = output + compileClasspath
    }
}
于 2013-05-27T05:55:10.440 に答える