Gradle 项目 运行 IntelliJ 中的 jUnit 5 测试
Gradle project running jUnit 5 tests in IntelliJ
我现在正在尝试 Gradle 和 jUnit5。一切正常,除了我不能 运行 特定的 jUnit 测试。当我右击测试 class.
时 "Run 'SampleTest'" 选项没有出现
我有最新版本的 IntelliJ (2016.1.3) Ultimate。这是我的 build.gradle
文件:
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'
}
项目结构是标准的(就像在 Maven 中一样)。这是一个测试示例:
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);
}
}
我错过了什么?
编辑:
看来Gradle也没有接我的试卷。当我去build/reports/tests/index.html
时,它显示0测试。
最终编辑:
根据@dunny 的回答,这是我为使一切正常运行所做的工作。我像这样修改了我的 build.gradle
文件:
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'
}
}
在 IntelliJ 中,我打开 Gradle window,然后单击 "refresh all gradle projects" 按钮刷新库。
然后在我的测试 class 中,我在 class 声明的顶部添加了 @RunWith(JUnitPlatform.class)
。
当我执行 gradle build
时,结果可在此处获得:build\test-results\junit-platform\TEST-junit-jupiter.xml
IntelliJ 2016.1.3 不支持 JUnit 5 测试。但是,您可以添加注释 @RunWith(JUnitPlatform.class)
,这将在 JUnit 4 兼容模式下执行您的测试(您仍然可以使用所有 JUnit 5 功能)。有关详细信息,请参阅 http://junit.org/junit5/docs/current/user-guide/#running-tests-junit-platform-runner。
对于 Gradle,您需要包含 Gradle JUnit 5 插件以启用支持:
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'
见http://junit.org/junit5/docs/current/user-guide/#running-tests-build
您必须 run your tests with the JUnit 4 runner,因为 IntelliJ 2016.1.3 没有 JUnit 5 测试运行器。
如果您从文档 https://github.com/junit-team/junit5-samples/blob/r5.0.0-M1/junit5-maven-consumer/pom.xml 中链接的示例 pom.xml
开始,请执行以下两件事。
再添加一个依赖项
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>${junit.platform.version}</version>
</dependency>
然后 进行测试 class public 并用 @RunWith(JUnitPlatform.class)
.
注释
您的 IDE 现在会将 class 识别为测试并提供集成。
最新的Idea 2016.2现已支持JUnit 5框架。不用junit-gradle-plugin就可以直接运行 JUnit5测试了。请参阅 WHAT'S NEW IN INTELLIJ IDEA。将 Idea 升级到这个新版本后,您可以创建一个 gradle 项目并执行以下步骤来测试如何 运行 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.
}
在您的测试源文件夹中创建一个 class FirstJUnit5Test
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class FirstJUnit5Test {
@Test
void myFirstTest() {
assertEquals(2, 1 + 1);
}
}
- 在左侧项目窗格中右键单击此测试class,然后单击select“运行'FirstJUnit5Test'。您将看到如下结果:
- 更多信息,您可以查看this project from github。
更新
对于IDEA 2016.3.3及更高版本,dependencies
配置可以简化为:
dependencies {
testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M3")
}
我现在正在尝试 Gradle 和 jUnit5。一切正常,除了我不能 运行 特定的 jUnit 测试。当我右击测试 class.
时 "Run 'SampleTest'" 选项没有出现我有最新版本的 IntelliJ (2016.1.3) Ultimate。这是我的 build.gradle
文件:
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'
}
项目结构是标准的(就像在 Maven 中一样)。这是一个测试示例:
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);
}
}
我错过了什么?
编辑:
看来Gradle也没有接我的试卷。当我去build/reports/tests/index.html
时,它显示0测试。
最终编辑:
根据@dunny 的回答,这是我为使一切正常运行所做的工作。我像这样修改了我的 build.gradle
文件:
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'
}
}
在 IntelliJ 中,我打开 Gradle window,然后单击 "refresh all gradle projects" 按钮刷新库。
然后在我的测试 class 中,我在 class 声明的顶部添加了 @RunWith(JUnitPlatform.class)
。
当我执行 gradle build
时,结果可在此处获得:build\test-results\junit-platform\TEST-junit-jupiter.xml
IntelliJ 2016.1.3 不支持 JUnit 5 测试。但是,您可以添加注释 @RunWith(JUnitPlatform.class)
,这将在 JUnit 4 兼容模式下执行您的测试(您仍然可以使用所有 JUnit 5 功能)。有关详细信息,请参阅 http://junit.org/junit5/docs/current/user-guide/#running-tests-junit-platform-runner。
对于 Gradle,您需要包含 Gradle JUnit 5 插件以启用支持:
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'
见http://junit.org/junit5/docs/current/user-guide/#running-tests-build
您必须 run your tests with the JUnit 4 runner,因为 IntelliJ 2016.1.3 没有 JUnit 5 测试运行器。
如果您从文档 https://github.com/junit-team/junit5-samples/blob/r5.0.0-M1/junit5-maven-consumer/pom.xml 中链接的示例 pom.xml
开始,请执行以下两件事。
再添加一个依赖项
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>${junit.platform.version}</version>
</dependency>
然后 进行测试 class public 并用 @RunWith(JUnitPlatform.class)
.
您的 IDE 现在会将 class 识别为测试并提供集成。
最新的Idea 2016.2现已支持JUnit 5框架。不用junit-gradle-plugin就可以直接运行 JUnit5测试了。请参阅 WHAT'S NEW IN INTELLIJ IDEA。将 Idea 升级到这个新版本后,您可以创建一个 gradle 项目并执行以下步骤来测试如何 运行 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. }
在您的测试源文件夹中创建一个 class FirstJUnit5Test
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; public class FirstJUnit5Test { @Test void myFirstTest() { assertEquals(2, 1 + 1); } }
- 在左侧项目窗格中右键单击此测试class,然后单击select“运行'FirstJUnit5Test'。您将看到如下结果:
- 更多信息,您可以查看this project from github。
更新
对于IDEA 2016.3.3及更高版本,dependencies
配置可以简化为:
dependencies {
testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M3")
}