三个测试容器来自哪里?
Where are the three test containers coming from?
我整理了一个演示 JUnit5 项目来试用该框架。该项目由 Gradle (4.4)、Java (8) 和 Kotlin (1.2.0) 以及 4 个测试用例组成。我有以下 Gradle 构建脚本(我删除了大部分样板文件以仅保留重要内容):
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'org.junit.platform.gradle.plugin'
repositories {
mavenCentral()
}
buildscript {
ext.kotlin_version = '1.2.0'
repositories {
mavenCentral()
}
dependencies {
classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
configurations {
all {
exclude group: 'junit', module: 'junit'
}
}
project.ext {
junitPlatformVersion = '1.0.2'
junitJupiterVersion = '5.0.2'
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
testCompile "org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}"
testRuntime "org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}"
}
junitPlatform {
platformVersion '1.0.2'
filters {
engines {
include 'junit-jupiter'
}
}
}
我还有一个 KotlinTest.kt 和一个 JavaTest.java 具有等效的测试用例:
@Test
fun junit5TestPasses() {
assertTrue(true)
}
@Test
fun junit5TestFails() {
assertTrue(false)
}
当我 运行 使用 gradlew junitPlatformTest
进行测试时,我正确地看到 2 个测试通过,2 个测试失败。但是,我还看到“找到 3 个容器”。我的问题是为什么找到 3 个容器?这些是什么?我似乎无法在与此场景相关的 JUnit5 用户指南中找到有关测试容器的直接答案。
3 个容器 = JUnit Jupiter 引擎 + KotlinTest.class
+ JavaTest.class
一个引擎,一个 TestEngine
的实现,也被认为是一个容器。下一级是包含 @Test
注释方法的 class。查看从 user-guide:
复制的示例
├─ JUnit Vintage
│ └─ example.JUnit4Tests
│ └─ standardJUnit4Test ✔
└─ JUnit Jupiter
├─ StandardTests
│ ├─ succeedingTest() ✔
│ └─ skippedTest() ↷ for demonstration purposes
└─ A special test case
├─ Custom test name containing spaces ✔
├─ ╯°□°)╯ ✔
└─ ✔
Test run finished after 64 ms
[ 5 containers found ]
[ 0 containers skipped ]
[ 5 containers started ]
[ 0 containers aborted ]
[ 5 containers successful ]
[ 0 containers failed ]
[ 6 tests found ]
[ 1 tests skipped ]
[ 5 tests started ]
[ 0 tests aborted ]
[ 5 tests successful ]
[ 0 tests failed ]
这里可以看到五个容器,分别是:
- JUnit Vintage 引擎
- example.JUnit4Tests class
- JUnit Jupiter 引擎
- 标准测试 class
- 一个特殊的测试用例 class
六片叶子都是测试。
要查看为您的测试计划 运行 呈现的类似 tree,请将 details 'tree'
添加到 Gradle junitPlatform
任务。
我整理了一个演示 JUnit5 项目来试用该框架。该项目由 Gradle (4.4)、Java (8) 和 Kotlin (1.2.0) 以及 4 个测试用例组成。我有以下 Gradle 构建脚本(我删除了大部分样板文件以仅保留重要内容):
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'org.junit.platform.gradle.plugin'
repositories {
mavenCentral()
}
buildscript {
ext.kotlin_version = '1.2.0'
repositories {
mavenCentral()
}
dependencies {
classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
configurations {
all {
exclude group: 'junit', module: 'junit'
}
}
project.ext {
junitPlatformVersion = '1.0.2'
junitJupiterVersion = '5.0.2'
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
testCompile "org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}"
testRuntime "org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}"
}
junitPlatform {
platformVersion '1.0.2'
filters {
engines {
include 'junit-jupiter'
}
}
}
我还有一个 KotlinTest.kt 和一个 JavaTest.java 具有等效的测试用例:
@Test
fun junit5TestPasses() {
assertTrue(true)
}
@Test
fun junit5TestFails() {
assertTrue(false)
}
当我 运行 使用 gradlew junitPlatformTest
进行测试时,我正确地看到 2 个测试通过,2 个测试失败。但是,我还看到“找到 3 个容器”。我的问题是为什么找到 3 个容器?这些是什么?我似乎无法在与此场景相关的 JUnit5 用户指南中找到有关测试容器的直接答案。
3 个容器 = JUnit Jupiter 引擎 + KotlinTest.class
+ JavaTest.class
一个引擎,一个 TestEngine
的实现,也被认为是一个容器。下一级是包含 @Test
注释方法的 class。查看从 user-guide:
├─ JUnit Vintage
│ └─ example.JUnit4Tests
│ └─ standardJUnit4Test ✔
└─ JUnit Jupiter
├─ StandardTests
│ ├─ succeedingTest() ✔
│ └─ skippedTest() ↷ for demonstration purposes
└─ A special test case
├─ Custom test name containing spaces ✔
├─ ╯°□°)╯ ✔
└─ ✔
Test run finished after 64 ms
[ 5 containers found ]
[ 0 containers skipped ]
[ 5 containers started ]
[ 0 containers aborted ]
[ 5 containers successful ]
[ 0 containers failed ]
[ 6 tests found ]
[ 1 tests skipped ]
[ 5 tests started ]
[ 0 tests aborted ]
[ 5 tests successful ]
[ 0 tests failed ]
这里可以看到五个容器,分别是:
- JUnit Vintage 引擎
- example.JUnit4Tests class
- JUnit Jupiter 引擎
- 标准测试 class
- 一个特殊的测试用例 class
六片叶子都是测试。
要查看为您的测试计划 运行 呈现的类似 tree,请将 details 'tree'
添加到 Gradle junitPlatform
任务。