Best Kotest code snippet using io.kotest.runner.junit.platform.KotestJunitPlatformTestEngine.discover
DiscoveryTest.kt
Source:DiscoveryTest.kt  
1package com.sksamuel.kotest.runner.junit52import io.kotest.assertions.throwables.shouldThrow3import io.kotest.core.annotation.Isolate4import io.kotest.core.spec.style.FunSpec5import io.kotest.framework.discovery.Discovery6import io.kotest.framework.discovery.DiscoveryFilter7import io.kotest.framework.discovery.DiscoveryRequest8import io.kotest.framework.discovery.DiscoverySelector9import io.kotest.framework.discovery.Modifier10import io.kotest.matchers.shouldBe11import io.kotest.runner.junit.platform.KotestJunitPlatformTestEngine12import org.junit.platform.engine.UniqueId13import org.junit.platform.engine.discovery.ClassNameFilter14import org.junit.platform.engine.discovery.DiscoverySelectors15import org.junit.platform.engine.discovery.PackageNameFilter16import org.junit.platform.launcher.EngineFilter.excludeEngines17import org.junit.platform.launcher.EngineFilter.includeEngines18import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder19@Isolate20class DiscoveryTest : FunSpec({21   test("kotest should return Nil if request excludes kotest engine") {22      val req = LauncherDiscoveryRequestBuilder.request()23         .filters(24            excludeEngines(KotestJunitPlatformTestEngine.EngineId)25         )26         .build()27      val engine = KotestJunitPlatformTestEngine()28      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))29      descriptor.classes.size shouldBe 030   }31   test("kotest should return Nil for uniqueId selectors") {32      val req = LauncherDiscoveryRequestBuilder.request().selectors(DiscoverySelectors.selectUniqueId("[engine:failgood]/[class:whatever]"))33         .filters(34            includeEngines(KotestJunitPlatformTestEngine.EngineId)35         )36         .build()37      val engine = KotestJunitPlatformTestEngine()38      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))39      descriptor.classes.size shouldBe 040   }41   test("kotest should throw for uniqueIds with kotest engine descriptor") {42      val req = LauncherDiscoveryRequestBuilder.request().selectors(DiscoverySelectors.selectUniqueId("[engine:${KotestJunitPlatformTestEngine.EngineId}]/[class:whatever]"))43         .filters(44            includeEngines(KotestJunitPlatformTestEngine.EngineId)45         )46         .build()47      val engine = KotestJunitPlatformTestEngine()48      shouldThrow<RuntimeException> {49         engine.discover(req, UniqueId.forEngine("testengine"))50      }51   }52   test("kotest should return classes if request includes kotest engine") {53      val req = LauncherDiscoveryRequestBuilder.request()54         .filters(55            includeEngines(KotestJunitPlatformTestEngine.EngineId)56         )57         .build()58      val engine = KotestJunitPlatformTestEngine()59      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))60      descriptor.classes.size shouldBe 2761   }62   test("kotest should return classes if request has no included or excluded test engines") {63      val req = LauncherDiscoveryRequestBuilder.request()64         .filters(65            PackageNameFilter.includePackageNames("com.sksamuel.kotest")66         )67         .build()68      val engine = KotestJunitPlatformTestEngine()69      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))70      descriptor.classes.size shouldBe 2571   }72   test("kotest should support include package name filter") {73      val req = LauncherDiscoveryRequestBuilder.request()74         .filters(75            PackageNameFilter.includePackageNames("com.sksamuel.kotest.runner.junit5.mypackage")76         )77         .build()78      val engine = KotestJunitPlatformTestEngine()79      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))80      descriptor.classes.map { it.qualifiedName } shouldBe listOf(81         "com.sksamuel.kotest.runner.junit5.mypackage.DummySpec1",82         "com.sksamuel.kotest.runner.junit5.mypackage.mysubpackage.DummySpec1",83         "com.sksamuel.kotest.runner.junit5.mypackage.DummySpec2",84         "com.sksamuel.kotest.runner.junit5.mypackage.mysubpackage.DummySpec2",85      )86   }87   test("kotest should return Nil if include package name filters matches nothing") {88      val req = LauncherDiscoveryRequestBuilder.request()89         .filters(90            PackageNameFilter.includePackageNames("com.sksamuel.kotest.runner.foobar")91         )92         .build()93      val engine = KotestJunitPlatformTestEngine()94      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))95      descriptor.classes.size shouldBe 096   }97   test("kotest should recognize fully qualified include class name filters") {98      val req = LauncherDiscoveryRequestBuilder.request()99         .filters(100            ClassNameFilter.includeClassNamePatterns(DiscoveryTest::class.java.canonicalName)101         )102         .build()103      val engine = KotestJunitPlatformTestEngine()104      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))105      descriptor.classes.map { it.qualifiedName } shouldBe listOf(DiscoveryTest::class.java.canonicalName)106   }107   test("kotest should return Nil if include class name filters have no matching values") {108      val req = LauncherDiscoveryRequestBuilder.request()109         .filters(110            ClassNameFilter.includeClassNamePatterns("Foo")111         )112         .build()113      val engine = KotestJunitPlatformTestEngine()114      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))115      descriptor.classes.size shouldBe 0116   }117   test("kotest should recognize prefixed class name filters") {118      val req = LauncherDiscoveryRequestBuilder.request()119         .filters(120            ClassNameFilter.includeClassNamePatterns(".*DiscoveryTest")121         )122         .build()123      val engine = KotestJunitPlatformTestEngine()124      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))125      descriptor.classes.size shouldBe 1126   }127   test("kotest should recognize suffixed class name pattern filters") {128      val req = LauncherDiscoveryRequestBuilder.request()129         .filters(130            ClassNameFilter.includeClassNamePatterns("com.sksamuel.kotest.runner.junit5.DiscoveryTe.*")131         )132         .build()133      val engine = KotestJunitPlatformTestEngine()134      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))135      descriptor.classes.size shouldBe 1136   }137   test("kotest should support excluded class name pattern filters") {138      val req = LauncherDiscoveryRequestBuilder.request()139         .filters(140            PackageNameFilter.includePackageNames("com.sksamuel.kotest.runner.junit5.mypackage"),141            ClassNameFilter.excludeClassNamePatterns(".*2")142         )143         .build()144      val engine = KotestJunitPlatformTestEngine()145      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))146      descriptor.classes.map { it.qualifiedName } shouldBe listOf(147         com.sksamuel.kotest.runner.junit5.mypackage.DummySpec1::class.java.canonicalName,148         com.sksamuel.kotest.runner.junit5.mypackage.mysubpackage.DummySpec1::class.java.canonicalName,149      )150   }151   test("kotest should support excluded fully qualified class name") {152      val req = LauncherDiscoveryRequestBuilder.request()153         .filters(154            PackageNameFilter.includePackageNames("com.sksamuel.kotest.runner.junit5.mypackage"),155            ClassNameFilter.excludeClassNamePatterns(com.sksamuel.kotest.runner.junit5.mypackage.DummySpec1::class.java.canonicalName)156         )157         .build()158      val engine = KotestJunitPlatformTestEngine()159      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))160      descriptor.classes.map { it.qualifiedName } shouldBe listOf(161         com.sksamuel.kotest.runner.junit5.mypackage.mysubpackage.DummySpec1::class.java.canonicalName,162         com.sksamuel.kotest.runner.junit5.mypackage.DummySpec2::class.java.canonicalName,163         com.sksamuel.kotest.runner.junit5.mypackage.mysubpackage.DummySpec2::class.java.canonicalName,164      )165   }166   test("kotest should support selected class names") {167      val req = LauncherDiscoveryRequestBuilder.request()168         .selectors(169            DiscoverySelectors.selectClass("com.sksamuel.kotest.runner.junit5.mypackage.DummySpec2")170         )171         .build()172      val engine = KotestJunitPlatformTestEngine()173      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))174      descriptor.classes.map { it.qualifiedName } shouldBe listOf(com.sksamuel.kotest.runner.junit5.mypackage.DummySpec2::class.java.canonicalName)175   }176   test("kotest should support multiple selected class names") {177      val req = LauncherDiscoveryRequestBuilder.request()178         .selectors(179            DiscoverySelectors.selectClass("com.sksamuel.kotest.runner.junit5.mypackage.DummySpec1"),180            DiscoverySelectors.selectClass("com.sksamuel.kotest.runner.junit5.mypackage.DummySpec2")181         )182         .build()183      val engine = KotestJunitPlatformTestEngine()184      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))185      descriptor.classes.map { it.qualifiedName } shouldBe listOf(186         com.sksamuel.kotest.runner.junit5.mypackage.DummySpec1::class.java.canonicalName,187         com.sksamuel.kotest.runner.junit5.mypackage.DummySpec2::class.java.canonicalName,188      )189   }190   test("package selector should include packages and subpackages") {191      val req = LauncherDiscoveryRequestBuilder.request()192         .selectors(193            DiscoverySelectors.selectPackage("com.sksamuel.kotest.runner.junit5.mypackage")194         )195         .build()196      val engine = KotestJunitPlatformTestEngine()197      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))198      descriptor.classes.map { it.qualifiedName } shouldBe listOf(199         com.sksamuel.kotest.runner.junit5.mypackage.DummySpec1::class.java.canonicalName,200         com.sksamuel.kotest.runner.junit5.mypackage.mysubpackage.DummySpec1::class.java.canonicalName,201         com.sksamuel.kotest.runner.junit5.mypackage.DummySpec2::class.java.canonicalName,202         com.sksamuel.kotest.runner.junit5.mypackage.mysubpackage.DummySpec2::class.java.canonicalName,203      )204   }205   test("discovery should support multiple package selectors") {206      val req = LauncherDiscoveryRequestBuilder.request()207         .selectors(208            DiscoverySelectors.selectPackage("com.sksamuel.kotest.runner.junit5.mypackage2"),209            DiscoverySelectors.selectPackage("com.sksamuel.kotest.runner.junit5.mypackage3")210         )211         .build()212      val engine = KotestJunitPlatformTestEngine()213      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))214      descriptor.classes.map { it.qualifiedName } shouldBe listOf(215         com.sksamuel.kotest.runner.junit5.mypackage2.DummySpec3::class.java.canonicalName,216         com.sksamuel.kotest.runner.junit5.mypackage2.DummySpec4::class.java.canonicalName,217         com.sksamuel.kotest.runner.junit5.mypackage3.DummySpec6::class.java.canonicalName,218         com.sksamuel.kotest.runner.junit5.mypackage3.DummySpec7::class.java.canonicalName,219      )220   }221   test("kotest should support mixed package and class selectors") {222      val req = LauncherDiscoveryRequestBuilder.request()223         .selectors(224            DiscoverySelectors.selectClass("com.sksamuel.kotest.runner.junit5.mypackage.DummySpec1"),225            DiscoverySelectors.selectPackage("com.sksamuel.kotest.runner.junit5.mypackage2")226         )227         .build()228      val engine = KotestJunitPlatformTestEngine()229      val descriptor = engine.discover(req, UniqueId.forEngine("testengine"))230      descriptor.classes.map { it.qualifiedName } shouldBe listOf(231         com.sksamuel.kotest.runner.junit5.mypackage.DummySpec1::class.java.canonicalName,232         com.sksamuel.kotest.runner.junit5.mypackage2.DummySpec3::class.java.canonicalName,233         com.sksamuel.kotest.runner.junit5.mypackage2.DummySpec4::class.java.canonicalName234      )235   }236   test("kotest should detect only public spec classes when internal flag is not set") {237      Discovery().discover(238         DiscoveryRequest(239            selectors = listOf(DiscoverySelector.PackageDiscoverySelector("com.sksamuel.kotest.runner.junit5.mypackage3")),240            filters = listOf(DiscoveryFilter.ClassModifierDiscoveryFilter(setOf(Modifier.Public)))241         )242      ).specs.map { it.simpleName }.toSet() shouldBe setOf("DummySpec7")243   }244   test("kotest should detect internal spec classes when internal flag is set") {245      Discovery().discover(246         DiscoveryRequest(247            selectors = listOf(DiscoverySelector.PackageDiscoverySelector("com.sksamuel.kotest.runner.junit5.mypackage3")),248            filters = listOf(DiscoveryFilter.ClassModifierDiscoveryFilter(setOf(Modifier.Public, Modifier.Internal)))249         )250      ).specs.map { it.simpleName }.toSet() shouldBe setOf("DummySpec6", "DummySpec7")251   }252   test("kotest should detect only internal specs if public is not set") {253      Discovery().discover(254         DiscoveryRequest(255            selectors = listOf(DiscoverySelector.PackageDiscoverySelector("com.sksamuel.kotest.runner.junit5.mypackage3")),256            filters = listOf(DiscoveryFilter.ClassModifierDiscoveryFilter(setOf(Modifier.Internal)))257         )258      ).specs.map { it.simpleName }.toSet() shouldBe setOf("DummySpec6")259   }260})...KotestJunitPlatformTestEngine.kt
Source:KotestJunitPlatformTestEngine.kt  
...5import io.kotest.core.spec.Spec6import io.kotest.engine.TestEngineLauncher7import io.kotest.engine.listener.PinnedSpecTestEngineListener8import io.kotest.engine.listener.ThreadSafeTestEngineListener9import io.kotest.framework.discovery.Discovery10import io.kotest.mpp.Logger11import io.kotest.runner.junit.platform.gradle.GradleClassMethodRegexTestFilter12import io.kotest.runner.junit.platform.gradle.GradlePostDiscoveryFilterExtractor13import org.junit.platform.engine.DiscoverySelector14import org.junit.platform.engine.EngineDiscoveryRequest15import org.junit.platform.engine.ExecutionRequest16import org.junit.platform.engine.TestEngine17import org.junit.platform.engine.TestExecutionResult18import org.junit.platform.engine.UniqueId19import org.junit.platform.engine.discovery.MethodSelector20import org.junit.platform.engine.discovery.UniqueIdSelector21import org.junit.platform.engine.support.descriptor.EngineDescriptor22import org.junit.platform.launcher.LauncherDiscoveryRequest23import java.util.*24import kotlin.reflect.KClass25/**26 * A Kotest implementation of a Junit Platform [TestEngine].27 */28class KotestJunitPlatformTestEngine : TestEngine {29   private val logger = Logger(KotestJunitPlatformTestEngine::class)30   companion object {31      const val EngineId = "kotest"32   }33   override fun getId(): String = EngineId34   override fun getGroupId(): Optional<String> = Optional.of("io.kotest")35   override fun execute(request: ExecutionRequest) {36      logger.log { Pair(null, "ExecutionRequest[${request::class.java.name}] [configurationParameters=${request.configurationParameters}; rootTestDescriptor=${request.rootTestDescriptor}]") }37      val root = request.rootTestDescriptor as KotestEngineDescriptor38      when (root.error) {39         null -> execute(request, root)40         else -> abortExecution(request, root.error)41      }42   }43   private fun abortExecution(request: ExecutionRequest, e: Throwable) {44      request.engineExecutionListener.executionStarted(request.rootTestDescriptor)45      request.engineExecutionListener.executionFinished(request.rootTestDescriptor, TestExecutionResult.failed(e))46   }47   private fun execute(request: ExecutionRequest, root: KotestEngineDescriptor) {48      val configuration = ProjectConfiguration()49      val listener = ThreadSafeTestEngineListener(50         PinnedSpecTestEngineListener(51            JUnitTestEngineListener(52               SynchronizedEngineExecutionListener(53                  request.engineExecutionListener54               ),55               root,56            )57         )58      )59      request.configurationParameters.get("kotest.extensions").orElseGet { "" }60         .split(',')61         .map { it.trim() }62         .filter { it.isNotBlank() }63         .map { Class.forName(it).newInstance() as Extension }64         .forEach { configuration.registry.add(it) }65      TestEngineLauncher(listener)66         .withConfiguration(configuration)67         .withExtensions(root.testFilters)68         .withClasses(root.classes)69         .launch()70   }71   /**72    * gradlew --tests rules:73    * Classname: adds classname selector and ClassMethodNameFilter post discovery filter74    * Classname.method: adds classname selector and ClassMethodNameFilter post discovery filter75    * org.Classname: doesn't seem to invoke the discover or execute methods.76    *77    * filter in gradle test block:78    * includeTestsMatching("*Test") - class selectors and ClassMethodNameFilter with pattern79    * includeTestsMatching("*Test") AND includeTestsMatching("org.gradle.internal.*") - class selectors and ClassMethodNameFilter with two patterns80    */81   override fun discover(82      request: EngineDiscoveryRequest,83      uniqueId: UniqueId,84   ): KotestEngineDescriptor {85      logger.log { Pair(null, "JUnit discovery request [uniqueId=$uniqueId]") }86      logger.log { Pair(null, request.string()) }87      // if we are excluded from the engines then we say goodnight according to junit rules88      val isKotest = request.engineFilters().all { it.toPredicate().test(this) }89      if (!isKotest)90         return KotestEngineDescriptor(uniqueId, emptyList(), emptyList(), emptyList(), null)91      val classMethodFilterRegexes = GradlePostDiscoveryFilterExtractor.extract(request.postFilters())92      val gradleClassMethodTestFilter = GradleClassMethodRegexTestFilter(classMethodFilterRegexes)93      // a method selector is passed by intellij to run just a single method inside a test file94      // this happens for example, when trying to run a junit test alongside kotest tests,95      // and kotest will then run all other tests.96      // Some other engines run tests via uniqueId selectors97      // therefore, the presence of a MethodSelector or a UniqueIdSelector means we must run no tests in KT.98      // if we get a uniqueid with kotest as engine we throw because that should never happen99      val allSelectors = request.getSelectorsByType(DiscoverySelector::class.java)100      val containsUnsupported = allSelectors.any {101         if (it is UniqueIdSelector)102            if (it.uniqueId.engineId.get() == EngineId)103               throw RuntimeException("Kotest does not allow running tests via uniqueId")104            else true105         else106            it is MethodSelector107      }108      val descriptor = if (!containsUnsupported) {109         val discovery = Discovery(emptyList())110         val result = discovery.discover(request.toKotestDiscoveryRequest())111         KotestEngineDescriptor(112            uniqueId,113            result.specs,114            result.scripts,115            listOf(gradleClassMethodTestFilter),116            result.error117         )118      } else {119         KotestEngineDescriptor(uniqueId, emptyList(), emptyList(), emptyList(), null)120      }121      logger.log { Pair(null, "JUnit discovery completed [descriptor=$descriptor]") }122      return descriptor123   }124}125class KotestEngineDescriptor(126   id: UniqueId,127   val classes: List<KClass<out Spec>>,128   val scripts: List<KClass<*>>,129   val testFilters: List<TestFilter>,130   val error: Throwable?, // an error during discovery131) : EngineDescriptor(id, "Kotest") {132   override fun mayRegisterTests(): Boolean = true133}134fun EngineDiscoveryRequest.engineFilters() = when (this) {135   is LauncherDiscoveryRequest -> engineFilters.toList()136   else -> emptyList()137}138fun EngineDiscoveryRequest.postFilters() = when (this) {139   is LauncherDiscoveryRequest -> postDiscoveryFilters.toList()140   else -> emptyList()141}...PostFilterTest.kt
Source:PostFilterTest.kt  
...4import io.kotest.matchers.shouldBe5import io.kotest.core.spec.style.StringSpec6import org.junit.platform.engine.FilterResult7import org.junit.platform.engine.UniqueId8import org.junit.platform.engine.discovery.DiscoverySelectors9import org.junit.platform.launcher.PostDiscoveryFilter10import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder11import kotlin.reflect.jvm.jvmName12class PostFilterTest : StringSpec({13   "!KotestJunitPlatformTestEngine should apply post filters from a LauncherDiscoveryRequest" {14      val request = LauncherDiscoveryRequestBuilder()15         .selectors(DiscoverySelectors.selectClass(SpecToBeExcluded::class.java))16         .selectors(DiscoverySelectors.selectClass(SpecToBeIncluded::class.java))17         .filters(PostDiscoveryFilter {18            when (it.uniqueId.toString()) {19               "[engine:test-engine]/[spec:com.sksamuel.kotest.runner.junit5.SpecToBeExcluded]" ->20                  FilterResult.excluded("")21               else ->22                  FilterResult.included("")23            }24         }).build()25      val descriptor = KotestJunitPlatformTestEngine()26         .discover(request, UniqueId.forEngine("test-engine"))27      descriptor.classes.first().jvmName shouldBe "com.sksamuel.kotest.runner.junit5.SpecToBeIncluded"28      descriptor.classes.size shouldBe 129   }30})31class SpecToBeExcluded : FunSpec()32class SpecToBeIncluded : FunSpec()...discover
Using AI Code Generation
1import io.kotest.assertions.throwables.shouldThrow2import io.kotest.core.spec.style.StringSpec3import io.kotest.matchers.shouldBe4import io.kotest.matchers.shouldNotBe5class MyTest : StringSpec({6    "test" {7    }8})9fun main() {10    val engine = KotestJunitPlatformTestEngine()11    val discover = engine.discover(DiscoveryRequestBuilder.request().selectors(selectClass(MyTest::class.java)).build())12}13import io.kotest.assertions.throwables.shouldThrow14import io.kotest.core.spec.style.StringSpec15import io.kotest.matchers.shouldBe16import io.kotest.matchers.shouldNotBe17class MyTest : StringSpec({18    "test" {19    }20})21fun main() {22    val engine = KotestJunitPlatformTestEngine()23    val executionRequest = ExecutionRequestBuilder.request().selectors(selectClass(MyTest::class.java)).build()24    val listener = object : TestExecutionListener {25        override fun executionFinished(testIdentifier: TestIdentifier, testExecutionResult: TestExecutionResult) {26            println(testIdentifier)27            println(testExecutionResult)28        }29    }30    engine.execute(executionRequest, listener)31}32import io.kotest.assertions.throwables.shouldThrow33import io.kotest.core.spec.style.StringSpec34import io.kotest.matchers.shouldBe35import io.kotest.matchers.shouldNotBe36class MyTest : StringSpec({37    "test" {38    }39})40fun main() {41    val engine = KotestJunitPlatformTestEngine()42    val executionRequest = ExecutionRequestBuilder.request().selectors(selectClass(MyTest::class.java)).build()43    val listener = object : TestExecutionListener {44        override fun executionFinished(testIdentifier: TestIdentifier, testExecutionResult: TestExecutionResult) {45            println(testIdentifier)46            println(testExecutionResult)discover
Using AI Code Generation
1import io.kotest.core.spec.style.StringSpec2class MyTest : StringSpec({3   "test" {4       println("test")5   }6})7import io.kotest.core.spec.style.StringSpec8class MyTest : StringSpec({9   "test" {10       println("test")11   }12})13import io.kotest.core.spec.style.StringSpec14class MyTest : StringSpec({15   "test" {16       println("test")17   }18})19import io.kotest.core.spec.style.StringSpec20class MyTest : StringSpec({21   "test" {22       println("test")23   }24})25import io.kotest.core.spec.style.StringSpec26class MyTest : StringSpec({27   "test" {28       println("test")29   }30})31import io.kotest.core.spec.style.StringSpec32class MyTest : StringSpec({33   "test" {34       println("test")35   }36})37import io.kotest.core.spec.style.StringSpec38class MyTest : StringSpec({39   "test" {40       println("test")41   }42})43import io.kotest.core.spec.style.StringSpec44class MyTest : StringSpec({45   "test" {46       println("test")47   }48})49import io.kotest.core.spec.style.StringSpec50class MyTest : StringSpec({51   "test" {52       println("test")53   }54})55import io.kotest.core.spec.style.StringSpec56class MyTest : StringSpec({57   "test" {58       println("test")59   }60})discover
Using AI Code Generation
1import io.kotest.core.spec.style.StringSpec2class MyTest : StringSpec() {3init {4“test 1” {5}6“test 2” {7}8}9}10at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:87)11at io.kotest.runner.junit.platform.KotestJunitPlatformTestEngine.execute(KotestJunitPlatformTestEngine.kt:62)12at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:65)13at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:47)14at org.junit.platform.console.tasks.ConsoleTestExecutor.executeTests(ConsoleTestExecutor.java:65)15at org.junit.platform.console.tasks.ConsoleTestExecutor.lambda$execute$0(ConsoleTestExecutor.java:57)16at org.junit.platform.console.tasks.CustomContextClassLoaderExecutor.invoke(CustomContextClassLoaderExecutor.java:33)17at org.junit.platform.console.tasks.ConsoleTestExecutor.execute(ConsoleTestExecutor.java:57)18at org.junit.platform.console.ConsoleLauncher.executeTests(ConsoleLauncher.java:84)19at org.junit.platform.console.ConsoleLauncher.execute(ConsoleLauncher.java:74)20at org.junit.platform.console.ConsoleLauncher.execute(ConsoleLauncher.java:47)21at org.junit.platform.console.ConsoleLauncher.main(ConsoleLauncher.java:39)22implementation(“io.kotest:kotest-runner-junit5-jvm:4.4.0”)23implementation(“io.kotest:kotest-assertions-core-jvm:4.4.0”)24implementation(“io.kotest:kotest-property-jvm:4.4.0”)25implementation(“org.junit.jupiter:junit-jupiter-api:5.6.2”)26implementation(“org.junit.jupiter:junit-jupiter-params:5.6.2”)27implementation(“org.junit.platform:junit-platform-launcher:1.6.2”)28implementation(“org.junit.platform:junit-platform-runner:1.6.2”)Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
