java - 三个测试容器来自哪里?

标签 java kotlin junit5

我整理了一个演示 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 Engine + KotlinTest.class + JavaTest.class

一个引擎,一个TestEngine的实现,也被认为是一个容器。下一级是包含 @Test 注释方法的类。查看从 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          ]

这里有五个容器,分别是:

  1. JUnit Vintage 引擎
  2. example.JUnit4Tests
  3. JUnit Jupiter 引擎
  4. 标准测试
  5. 一个特殊的测试用例

所有六片叶子都是测试。

看到类似tree为您的测试计划运行呈现,将 details 'tree' 添加到 Gradle junitPlatform 任务。

关于java - 三个测试容器来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47758766/

相关文章:

java - 如何在openmeeting中添加或更改API?

java - Spring Boot - 创建名称为 'org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration' 的 bean 时出错

android - AS 3.5 中的 lint 无法识别 SafeArgs 生成的类(方向/参数)

java - @Mock 导致异常,但 @MockBean 在 Spring Boot 应用程序中工作

测试中的 JUnit5 断言计数

java - 如何在android中的字符串中添加@符号?

java - 在应用程序中,我可以访问 JDBC 驱动程序(异常 java.lang.ClassNotFoundException : com. mysql.cj.jdbc.Driver)

kotlin - Reactor - 只为慢速消费者保留/处理最新值

android - MVVM+Kotlin+数据绑定(bind)最佳实践

java - AssertJ-Swing 和 Junit 5 支持