gpt4 book ai didi

java - Kotlin 中 @BeforeAll 的正确解决方法是什么

转载 作者:IT老高 更新时间:2023-10-28 13:34:56 31 4
gpt4 key购买 nike

目前 JUnit 5 API 只允许在静态方法上使用 @BeforeAll

所以如果我做这样的事情,它不会编译:

@BeforeAll
fun setup() {
MockitoAnnotations.initMocks(this)
mvc = MockMvcBuilders.standaloneSetup(controller).build()
}

为了在 Kotlin 中有一个静态方法,我必须像这样使用 companion object:

companion object {
@JvmStatic
@BeforeAll
fun setup() {
MockitoAnnotations.initMocks(this)
mvc = MockMvcBuilders.standaloneSetup(smsController).build()
}
}

这将编译,但我无权访问父类中的变量。那么用 Kotlin 调用 JUnit 5 @BeforeAll 的惯用方式是什么?

最佳答案

JUnit 5 具有可用于此目的的 @TestInstance(PER_CLASS) 注释。它启用的功能之一是非静态 BeforeAllAfterAll 方法:

@TestInstance(PER_CLASS)
class BeforeAllTests {

lateinit var isInit = false

@BeforeAll
fun setup() {
isInit = true
}

@TestFactory
fun beforeAll() = listOf(
should("initialize isInit in BeforeAll") {
assertTrue(isInit)
}
)
}

fun should(name: String, test: () -> Unit) = DynamicTest.dynamicTest("should $name", test)

关于java - Kotlin 中 @BeforeAll 的正确解决方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38516418/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com