2017-02-06 6 views
8

Ich habe einen Integrationstest Quellordner in gradle wie so ein:Mark Gradle Quellordner als Testquelle in IntelliJ

subprojects { 
    apply plugin: 'java' 
    apply plugin: 'idea' 

    sourceCompatibility = 1.8 

    configurations { 
     integrationTestCompile.extendsFrom testCompile 
     integrationTestCompileOnly.extendsFrom integrationTestCompile 
     integrationTestCompileOnly.extendsFrom testCompileOnly 
     integrationTestRuntime.extendsFrom testRuntime 
    } 

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

    task integrationTest(type:Test) { 
     testClassesDir = sourceSets.integrationTest.output.classesDir 
     classpath = sourceSets.integrationTest.runtimeClasspath 
     outputs.upToDateWhen { false } 
    } 
} 

Für die Durchführung von Tests, das sehr gut funktioniert, aber es verursacht Probleme mit IntelliJ der Inspektionen , die das Verhalten für den Testcode ändern können. IntelliJ erkennt den Quellordner nicht als Testquelle.

Ich habe versucht, sie als solche Zugabe (innen subprojects):

idea { 
    module { 
     testSourceDirs += file('src/integrationTest/java') 
    } 
} 

aber, dass überhaupt nicht helfen. Ich habe auch versucht, sie manuell als Testquelle zu markieren (Kontextmenü -> Verzeichnis markieren als -> Testquellen root), aber IntelliJ überschreibt das schnell wieder in das normale Quellverzeichnis.

Wie konfiguriere ich das korrekt in Gradle?

Ich benutze IntelliJ 2016.01.03 und Gradle 2.14.1 auf Ubuntu 16.04

+3

Wie haben Sie Ihre IDEA-Dateien nach Änderungen regeneriert? Das sollte funktionieren (und ich habe es lokal getestet) - versuche $ './gradlew cleanIdea idea' zu starten. – tddmonkey

+0

Ich hätte lieber eine Lösung, bei der Gradle meine Idea-Konfiguration nicht erzeugt, da es auch Nicht-Gradle-Projekte in der dasselbe Repo. – Jorn

+0

@tddmonkey Ihre Lösung erzeugt die richtigen '.iml' Dateien, aber IntelliJ verwendet sie nicht. Weißt du, wie ich es dazu bringe? Das Java-Projekt ist ein Unterordner eines anderen, und dieses ist das Hauptprojekt mit einem Ordner '.idea' für die Konfiguration. – Jorn

Antwort

1

Sie müssten sicher Testquelle machen, ist die einzige Quelle für dieses Paket dann

idea { 
    module { 
     sourceDirs -= file('src/integrationTest/java') 
     testSourceDirs += file('src/integrationTest/java') 
    } 
} 

und Sie dann würde gradle cleanIdea idea benötigen, um die IntelliJ-Dateien neu zu erstellen.

sourceSets { 
    integrationTest { 
     java { 
      compileClasspath += main.output + test.output 
      runtimeClasspath += main.output + test.output 
      srcDir "$projectDir/src/integrationTest/java" 
     } 
     resources.srcDir "$projectDir/src/integrationTest/resources" 
    } 
} 
+1

Nein, das ändert nichts. – Jorn

+0

@Jorn versuchen, es zu ändern, wie ich in der Bearbeitung vorgeschlagen, nicht sicher über Ihre 'file()', aber ich neige dazu, den gesamten Pfad zur Quelle anzugeben. Nutzen Sie auch das Idea-Plugin in Gradle oder verwenden Sie die Gradle-Integration in IntelliJ IDE? – LazerBanana

Verwandte Themen