2017-05-30 5 views
1

JavaライブラリをGradle​​に移行していますが、以下に定義されている統合タスクに関するいくつかの問題が発生しました。Gradle 4.0マイルストーン2での統合テスト

このタスクでは、私は二つの異なるソースディレクトリsrc/testsrc/integrationを持っており、それらを実行するために別のGradleタスクを持つことができます./gradlew test./gradlew integrationbuild.gradle

apply plugin: 'java-library' 
apply plugin: 'idea' 

apply from: './integration.gradle' 

targetCompatibility = '1.7' 
sourceCompatibility = '1.7' 

dependencies { 

    api 'com.github.ihsanbal:LoggingInterceptor:2.0.0' 
    api 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0' 
    api 'com.squareup.retrofit2:retrofit:2.0.2' 
    api 'com.squareup.retrofit2:converter-gson:2.0.2' 
    api 'com.squareup.retrofit2:adapter-rxjava:2.0.2' 

    testImplementation 'junit:junit:4.12' 
} 

test { 
    testLogging.showStandardStreams = true 
} 


task copyTestResources(type: Copy) { 
    from sourceSets.test.resources 
    into sourceSets.test.output.classesDir 
} 
processTestResources.dependsOn copyTestResources 

integration.gradle

sourceSets { 
    integration { 
    java { 
     compileClasspath += main.output + test.output 
     runtimeClasspath += main.output + test.output 
     srcDir file('src/integration/java') 
    } 
    resources.srcDir file('src/integration/resources') 
    } 
} 
configurations { 
    integrationCompile.extendsFrom testCompile 
    integrationRuntime.extendsFrom testRuntime 
} 
idea { 
    module { 
    testSourceDirs += file('src/integration/java') 
    scopes.TEST.plus += [configurations.integrationCompile] 
    } 
} 
task integration(type: Test) { 
    testClassesDir = sourceSets.integration.output.classesDir 
    classpath = sourceSets.integration.runtimeClasspath 
} 

integration.mustRunAfter test 

内容の

内容は、この構成には二つの問題があります。

1)copyTestResourcesclassesDirは廃止予定であり、classesDirsは互換性がないため、タスクは機能しません。

2)クラスパスにライブラリの依存関係が含まれていません。 コンパイルは、この問題を解決する方法について

error: cannot find symbol 
error: package SOMETHING does not exist 

任意の手掛かり次のエラーの完全な失敗しますか?ありがとうございます

答えて

1

tips on the Gradle forumの後、私はそれを働かせています。

sourceSets { 
    integration { 
    java { 
     compileClasspath += main.output + test.output 
     runtimeClasspath += main.output + test.output 
     srcDir file('src/integration/java') 

     integration.runtimeClasspath += integration.output 
    } 
    resources.srcDir file('src/integration/resources') 
    } 
} 
configurations { 
    integrationImplementation.extendsFrom testImplementation 
    integrationRuntimeOnly.extendsFrom testRuntimeOnly 
} 
idea { 
    module { 
    testSourceDirs += file('src/integration/java') 
    scopes.TEST.plus += [configurations.integrationRuntimeClasspath, configurations.integrationCompileClasspath] 
    } 
} 
task integration(type: Test) { 
    testClassesDirs += sourceSets.integration.output.classesDirs 
    classpath = sourceSets.integration.runtimeClasspath 
} 
integration.mustRunAfter test 

integration.gradle

apply plugin: 'java-library' 
apply plugin: 'idea' 

apply from: './integration.gradle' 

targetCompatibility = '1.7' 
sourceCompatibility = '1.7' 

dependencies { 

    api 'com.github.ihsanbal:LoggingInterceptor:2.0.0' 
    api 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0' 
    api 'com.squareup.retrofit2:retrofit:2.0.2' 
    api 'com.squareup.retrofit2:converter-gson:2.0.2' 
    api 'com.squareup.retrofit2:adapter-rxjava:2.0.2' 

    testImplementation 'junit:junit:4.12' 
} 
test { 
    testLogging.showStandardStreams = true 
} 

build.gradleはまだそれが現在働いていないとして、IDE内からそれらを実行する方法を把握する必要がありますが、少なくとも私は再びCIを持つことができます。