Java 使用自定义启动器运行一批Junit5测试(无反射或自动注册)
在JUnit5中,如何以编程方式注册扩展,而不必每次测试都注册。我目前正在使用由system属性激活的java服务机制。但我希望在测试运行中定义一个参数,而不使用该机制,因为它使用Graal原生映像运行,并尽可能避免自动配置Java 使用自定义启动器运行一批Junit5测试(无反射或自动注册),java,kotlin,junit5,Java,Kotlin,Junit5,在JUnit5中,如何以编程方式注册扩展,而不必每次测试都注册。我目前正在使用由system属性激活的java服务机制。但我希望在测试运行中定义一个参数,而不使用该机制,因为它使用Graal原生映像运行,并尽可能避免自动配置 import mockwebserver3.MockWebServer import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test import org.junit.
import mockwebserver3.MockWebServer
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.RegisterExtension
import org.junit.jupiter.engine.JupiterTestEngine
import org.junit.platform.console.options.Theme
import org.junit.platform.engine.TestEngine
import org.junit.platform.engine.discovery.DiscoverySelectors.selectClass
import org.junit.platform.launcher.Launcher
import org.junit.platform.launcher.LauncherDiscoveryRequest
import org.junit.platform.launcher.PostDiscoveryFilter
import org.junit.platform.launcher.TestExecutionListener
import org.junit.platform.launcher.core.LauncherConfig
import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder
import org.junit.platform.launcher.core.LauncherFactory
import org.junit.platform.launcher.listeners.SummaryGeneratingListener
import java.io.PrintWriter
import kotlin.system.exitProcess
class MySampleTest {
@Test
fun failingTest(server: MockWebServer) {
assertThat("hello").isEqualTo("goodbye")
}
}
fun main() {
System.setProperty("junit.jupiter.extensions.autodetection.enabled", "true")
val summaryListener = SummaryGeneratingListener()
val jupiterTestEngine = JupiterTestEngine()
val config = LauncherConfig.builder()
.enableTestExecutionListenerAutoRegistration(false)
.enableTestEngineAutoRegistration(false)
.enablePostDiscoveryFilterAutoRegistration(false)
.addTestEngines(jupiterTestEngine)
.addTestExecutionListeners(summaryListener, DotListener)
.build()
val launcher: Launcher = LauncherFactory.create(config)
val request: LauncherDiscoveryRequest = LauncherDiscoveryRequestBuilder.request()
// TODO replace junit.jupiter.extensions.autodetection.enabled with API approach.
// .enableImplicitConfigurationParameters(false)
.selectors(selectClass(MySampleTest::class.java))
.build()
val result = launcher.execute(request)
val summary = summaryListener.summary
summary.printTo(PrintWriter(System.out))
exitProcess(if (summary.testsFailedCount != 0L) -1 else 0)
}