Edit Page

教程 - 在 JVM 平台使用 JUnit 进行代码测试

最终更新: 2024/03/21

本教程将向你演示如何编写简单的单元测试, 并使用 Gradle 构建工具来运行测试.

教程中的示例程序使用了 kotlin.test 库, 并使用 JUnit 运行测试.

开始之前, 首先请下载并安装最新版的 IntelliJ IDEA.

添加依赖项

  1. 在 IntelliJ IDEA 中打开一个 Kotlin 项目. 如果你还没有项目, 请 创建一个新项目.

    创建项目时请选择 JUnit 5 作为测试框架.

  2. 打开 build.gradle(.kts) 文件, 并向 Gradle 配置添加以下依赖项. 通过这个依赖项, 你将可以使用 kotlin.testJUnit:

    dependencies {
        // 其他依赖项.
        testImplementation(kotlin("test"))
    }
    
    dependencies {
        // 其他依赖项.
        testImplementation 'org.jetbrains.kotlin:kotlin-test'
    }
    
  3. build.gradle(.kts) 文件添加 test 任务:

    tasks.test {
        useJUnitPlatform()
    }
    
    test {
        useJUnitPlatform()
    }
    

    如果你使用 New Project 向导创建项目, 会自动添加这个任务.

添加需要测试的代码

  1. 打开 src/main/kotlin 中的 main.kt 文件.

    src 目录包含 Kotlin 源代码文件和资源文件. main.kt 文件包含示例代码, 它将打印输出 Hello, World!.

  2. 创建 Sample 类, 包含 sum() 函数, 它会将两个整数加在一起:

    class Sample() {
    
        fun sum(a: Int, b: Int): Int {
            return a + b
        }
    }
    

创建测试

  1. 在 IntelliJ IDEA 中, 对 Sample 类选择 Code | Generate | Test….

    创建测试

  2. 输入测试类的名称. 比如, SampleTest.

    IntelliJ IDEA 会在 test 目录中创建 SampleTest.kt 文件. 这个目录包含 Kotlin 测试源代码文件和资源文件.

    你也可以在 src/test/kotlin 目录中为测试代码手动创建一个 *.kt 文件.

  3. SampleTest.kt 中为 sum() 函数添加测试代码:

    • 使用 @Test 注解, 定义测试函数 testSum().
    • 使用 assertEquals() 函数, 检查 sum() 函数是否返回了期待的值.
    import kotlin.test.Test
    import kotlin.test.assertEquals
    
    internal class SampleTest {
    
        private val testSample: Sample = Sample()
    
        @Test
        fun testSum() {
            val expected = 42
            assertEquals(expected, testSample.sum(40, 2))
        }
    }
    

运行测试

  1. 使用源代码编辑器侧栏中的图标运行测试.

    运行测试

    你也可以在命令行执行命令 ./gradlew check, 运行整个项目的所有测试.

  2. Run 工具窗口检查测试结果:

    检查测试结果. 测试成功通过

    测试函数执行成功了.

  3. expected 变量值修改为 43, 确认测试正确工作:

    @Test
    fun testSum() {
        val expected = 43
        assertEquals(expected, classForTesting.sum(40, 2))
    }
    
  4. 再次运行测试, 并检查结果:

    检查测试结果. 测试失败

    测试执行失败.

下一步做什么?

完成你的第一个测试之后, 你可以: