2016-07-10 35 views
11

Próbuję teraz zarówno Gradle, jak i jUnit5. Wszystko działa dobrze, z wyjątkiem tego, że nie mogę uruchomić określonego testu jUnit. Opcja "Uruchom" SampleTest "nie pojawia się, gdy kliknę prawym przyciskiem myszy klasę testową.Projekt Gradle działa jUnit 5 testów w IntelliJ

Mam najnowszą wersję IntelliJ (2016.1.3) Ultimate. Oto moja build.gradle file:

repositories { 
    mavenCentral() 
} 

apply plugin: 'java' 

version = '1.0.0-SNAPSHOT' 

jar { 
    baseName = 'test-project' 
} 

dependencies { 
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.0.0-M1' 
} 

Struktura projektu jest standardowym (jak w Maven). A oto przykład testu:

package com.test; 

import org.junit.jupiter.api.Assertions; 
import org.junit.jupiter.api.Test; 

public class SampleTest { 
    @Test public void sampleTest() { 
    int test = 1; 
    Assertions.assertTrue(test == 1); 
    } 
} 

Czego mi brakuje?

EDIT:

Wydaje się, że Gradle nie odbiera mój test albo. Kiedy idę do build/reports/tests/index.html, wskazuje 0 test.

FINAL EDIT:

następującą odpowiedź @ dunny, oto co zrobiłem, aby wszystko działa. I zmodyfikowane mój plik build.gradle takiego:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M1' 
    } 
} 

repositories { 
    mavenCentral() 
} 

apply plugin: 'java' 
apply plugin: 'org.junit.platform.gradle.plugin' 

version = '1.0.0-SNAPSHOT' 

jar { 
    baseName = 'test-project' 
} 

dependencies { 
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.0.0-M1' 
    testCompile group: 'org.junit.platform', name: 'junit-platform-runner', version: '1.0.0-M1' 
    testCompile group: 'junit', name: 'junit', version: '4.12' 
    testRuntime group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.0.0-M1' 
} 

test { 
    testLogging { 
     events 'started', 'passed' 
    } 
} 

W IntelliJ, ja potem otworzył okno Gradle i kliknięciu na przycisk „Odśwież wszystkich projektów Gradle”, aby odświeżyć bibliotek.

Następnie w mojej klasie testowej dodałem @RunWith(JUnitPlatform.class) na górze deklaracji klasy.

I kiedy zrobić gradle build, wyniki dostępne są tutaj: build\test-results\junit-platform\TEST-junit-jupiter.xml

Odpowiedz

9

IntelliJ 03/01/2016 nie posiada wsparcia dla 5 testów JUnit. Możesz jednak dodać adnotację @RunWith(JUnitPlatform.class), która wykonałaby Twój test w trybie zgodności JUnit 4 (nadal możesz korzystać ze wszystkich funkcji JUnit 5). Aby uzyskać więcej informacji, patrz http://junit.org/junit5/docs/current/user-guide/#running-tests-junit-platform-runner.

Dla Gradle trzeba włączyć wtyczkę Gradle JUnit 5, aby włączyć obsługę:

buildscript { 
    repositories { 
     mavenCentral() 
     // The following is only necessary if you want to use SNAPSHOT releases. 
     // maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } 
    } 
    dependencies { 
     classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M1' 
    } 
} 

apply plugin: 'org.junit.platform.gradle.plugin' 

Zobacz http://junit.org/junit5/docs/current/user-guide/#running-tests-build

+0

Dziękuję bardzo! To wystarczyło. –

+2

IntelliJ 2016.2 ma teraz obsługę JUnit5. Po prostu użyj pliku build.gradle edytowanego w pytaniu przez @ Jean-FrançoisBeauchef jako rozwiązanie. –

0

Musisz run your tests with the JUnit 4 runner, ponieważ IntelliJ 2016.1.3 nie ma JUnit 5 Test biegacza .

Jeśli zaczynasz od przykładu pom.xml powiązanego w dokumentacji, https://github.com/junit-team/junit5-samples/blob/r5.0.0-M1/junit5-maven-consumer/pom.xml, wykonaj następujące dwie czynności.

Dodaj jeszcze jeden zależnościami

<dependency> 
     <groupId>org.junit.platform</groupId> 
     <artifactId>junit-platform-runner</artifactId> 
     <version>${junit.platform.version}</version> 
    </dependency> 

następnie dokonać klasa Test publicznego i opisywanie go z @RunWith(JUnitPlatform.class).

Twoje IDE rozpozna teraz klasę jako test i zapewni integrację.

+0

Dzięki, ale wszystko zostało już powiedziane przez dunni, z wyjątkiem części pom.xml, ale nie używam Mavena. Używam Gradle. Dzięki i tak. –

+0

@Jean i upublicznienie klasy testowej. JUnit5 może działać bez niego, JUnit4 nie. Przełączanie deklaracji zależności na składnię Gradle powinno być trywialne dla użytkownika Gradle. – user7610

+0

Ale moja klasa testowa jest publiczna? –

13

Najnowsza wersja Idea 2016.2 obsługuje teraz framework JUnit 5.Możesz bezpośrednio uruchomić test JUnit5 bez junit-gradle-plugin. Patrz: WHAT'S NEW IN INTELLIJ IDEA. Po uaktualnieniu Idea do tej nowej wersji możesz utworzyć projekt gradle i wykonać następujące kroki, aby przetestować, jak uruchomić test JUnit 5.

  • build.gradle

    apply plugin: 'java' 
    
    compileTestJava { 
        sourceCompatibility = 1.8 
        targetCompatibility = 1.8 
    } 
    
    repositories { 
        mavenCentral() 
    } 
    
    dependencies { 
        testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M1") 
        testRuntime("org.junit.vintage:junit-vintage-engine:4.12.0-M1") 
        //NOTE: if you replaced above testRuntime dependency with following 
        //testRuntime("org.junit.jupiter:junit-jupiter-engine:5.0.0-M1") 
        //this test would fail. 
    } 
    
  • Tworzenie FirstJUnit5Test klasy w folderze źródłowym testowym

    import org.junit.jupiter.api.Test; 
    import static org.junit.jupiter.api.Assertions.assertEquals; 
    
    public class FirstJUnit5Test { 
        @Test 
        void myFirstTest() { 
         assertEquals(2, 1 + 1); 
        } 
    } 
    
  • prawym przyciskiem myszy na tej klasy testowej w panelu projektu lewej, a następnie wybierz " Uruchom "FirstJUnit5Test". Zobaczysz wynik w następujący sposób: enter image description here
  • Aby uzyskać więcej informacji, możesz zamówić this project from github.

UPDATE

za pomysł 2016.3.3 i wyższe, konfiguracja dependencies można uprościć do:

dependencies { 
    testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M3") 
}