Kotlin测试中如何用kotlintest断言校验集合所有对象属性匹配规则
答案
Kotest(原KotlinTest)断言库有对应的内置方法可以直接实现你的需求,你期望的调用形式可以通过all扩展方法实现,具体用法如下:
你的实体类定义:
data class WeatherForecast( val city: String, val forecast: String // ... )
断言写法和你期望的形式几乎完全一致:
import io.kotest.assertions.all forecasts.all { it.forecast == "SUNNY" }
该断言会检查集合内的所有元素是否满足Lambda中定义的规则,全部满足则断言通过,只要有任意一个元素不匹配,就会抛出断言失败异常,同时会明确标注不匹配元素的下标和对应字段值,方便定位问题。
如果你使用的是3.x及更早的旧版本KotlinTest,对应的方法名为shouldAll,写法如下:
forecasts.shouldAll { it.forecast == "SUNNY" }
另外你也可以选择语义更明确的forAll方法,效果完全一致:
import io.kotest.assertions.forAll forAll(forecasts) { it.forecast == "SUNNY" }
如果需要反向验证所有元素都不满足某规则,可以使用none方法:
// 验证所有预报都不是雨天 forecasts.none { it.forecast == "RAINY" }
内容的提问来源于stack exchange,提问作者pixel
相关产品推荐
相关产品推荐

