我使用junit 5的下一个版本
<junit.jupiter.version>5.2.0</junit.jupiter.version>
<junit.platform.version>1.2.0</junit.platform.version>
<junit.vintage.version>5.2.0</junit.vintage.version>
Kotlin版本
<kotlin.version>1.2.31</kotlin.version>
我尝试使用junit 5中的新断言功能与kotlin一样
assertAll("person",
{ assertEquals("John", person.firstName) },
{ assertEquals("Doe", person.lastName) }
)
但是代码分析器说没有找到合适的方法版本。
Error:(28, 9) Kotlin: None of the following functions can be called with the arguments supplied:
public fun assertAll(vararg executables: () -> Unit): Unit defined in org.junit.jupiter.api
public fun assertAll(heading: String?, vararg executables: () -> Unit): Unit defined in org.junit.jupiter.api
如果我这样编写代码就行了。有什么诀窍?
assertAll("person",
Executable { assertEquals("John", person.firstName) },
Executable { assertEquals("Doe", person.lastName) }
)
答案 0 :(得分:4)
使用Kotlin函数assertAll()
而不是静态函数Assertions.assertAll()
,您会很高兴。从以下地址更改您的导入:
import org.junit.jupiter.api.Assertions.assertAll
为:
import org.junit.jupiter.api.assertAll
现在这段代码将起作用:
assertAll("person",
{ assertEquals("John", person.firstName) },
{ assertEquals("Doe", person.lastName) }
)
您可能有兴趣知道JUnit 5在其主要源代码中包含Kotlin助手,直接来自JUnit团队!
如果你真的,真的,真的想要使用直接的Java版本,你需要输入你的Lambda:
assertAll("person",
Executable { assertEquals("John", person.firstName) },
Executable { assertEquals("Doe", person.lastName) }
)