You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin List扩展函数单元测试:如何传入测试用List参数

Kotlin List 扩展函数测试方法

先修正你给出的扩展函数的语法错误:Kotlin 中用等号声明单表达式函数时不需要加return,两种合法写法二选一:

// 写法1:单表达式函数,省略return和返回值类型(可推导场景)
fun List<Water>.getFilteredList() = listOf(filteredWater)

// 写法2:常规函数声明,带return
fun List<Water>.getFilteredList(): List<Water> {
    return listOf(filteredWater)
}

Kotlin 的扩展函数本质是把接收者类型作为第一个参数的静态方法,针对List<Water>的扩展函数不需要特殊传参,直接在你构造的List<Water>测试用例实例上调用即可,参考测试示例如下:

import org.junit.Test
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue

// 示例Water类型,可根据你的实际业务定义调整
data class Water(val isFiltered: Boolean)

// 修正后的扩展函数,这里按通用过滤逻辑做示例,你可以替换为自己的业务逻辑
fun List<Water>.getFilteredList() = filter { it.isFiltered }

class ListExtensionTest {
    @Test
    fun `getFilteredList 过滤结果符合预期`() {
        // 1. 构造测试用的List<Water>实例,也就是扩展函数的接收者
        val testList = listOf(
            Water(isFiltered = true),
            Water(isFiltered = false),
            Water(isFiltered = true)
        )
        // 2. 直接在测试列表上调用扩展函数即可,无需额外传参
        val result = testList.getFilteredList()
        // 3. 断言结果符合预期
        assertEquals(2, result.size)
        assertTrue(result.all { it.isFiltered })
    }

    @Test
    fun `空列表调用扩展函数返回空`() {
        val emptyTestList = emptyList<Water>()
        val result = emptyTestList.getFilteredList()
        assertEquals(0, result.size)
    }
}

如果你的扩展函数逻辑里用到的filteredWater是全局变量或者其他外部依赖,测试前提前把对应的依赖赋值为你测试用的模拟值即可。

内容的提问来源于stack exchange,提问作者Ankush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:45:02