반응형
DSL methods
import io.kotest.core.spec.style.WordSpec
class MyTests : WordSpec({
beforeTest {
println("Starting a test $it")
}
afterTest { (test, result) ->
println("Finished spec with result $result")
}
"this test" should {
"be alive" {
println("Johnny5 is alive!")
}
}
})
kotlincopy
Starting a test TestCase(descriptor=TestDescriptor(parent=SpecDescriptor(id=DescriptorId(value=com.example.demo.MyTests), kclass=class com.example.demo.MyTests), id=DescriptorId(value=this test)), name=TestName(testName=this test, focus=false, bang=false, prefix=null, suffix= should, defaultAffixes=true), spec=com.example.demo.MyTests@73ee9808, test=io.kotest.core.test.TestScope.() -> kotlin.Unit, source=FileSource(fileName=MyTests.kt, lineNumber=12), type=Container, config=ResolvedTestConfig(enabled=(io.kotest.core.test.TestCase) -> io.kotest.core.test.Enabled, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], extensions=[], severity=NORMAL, failfast=false, assertionMode=None, assertSoftly=false, coroutineDebugProbes=false, testCoroutineDispatcher=false, coroutineTestScope=false, blockingTest=false), factoryId=null, parent=null) Starting a test TestCase(descriptor=TestDescriptor(parent=TestDescriptor(parent=SpecDescriptor(id=DescriptorId(value=com.example.demo.MyTests), kclass=class com.example.demo.MyTests), id=DescriptorId(value=this test)), id=DescriptorId(value=be alive)), name=TestName(testName=be alive, focus=false, bang=false, prefix=null, suffix=null, defaultAffixes=false), spec=com.example.demo.MyTests@73ee9808, test=io.kotest.core.test.TestScope.() -> kotlin.Unit, source=FileSource(fileName=MyTests.kt, lineNumber=13), type=Test, config=ResolvedTestConfig(enabled=(io.kotest.core.test.TestCase) -> io.kotest.core.test.Enabled, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], extensions=[], severity=NORMAL, failfast=false, assertionMode=None, assertSoftly=false, coroutineDebugProbes=false, testCoroutineDispatcher=false, coroutineTestScope=false, blockingTest=false), factoryId=null, parent=TestCase(descriptor=TestDescriptor(parent=SpecDescriptor(id=DescriptorId(value=com.example.demo.MyTests), kclass=class com.example.demo.MyTests), id=DescriptorId(value=this test)), name=TestName(testName=this test, focus=false, bang=false, prefix=null, suffix= should, defaultAffixes=true), spec=com.example.demo.MyTests@73ee9808, test=io.kotest.core.test.TestScope.() -> kotlin.Unit, source=FileSource(fileName=MyTests.kt, lineNumber=12), type=Container, config=ResolvedTestConfig(enabled=(io.kotest.core.test.TestCase) -> io.kotest.core.test.Enabled, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], extensions=[], severity=NORMAL, failfast=false, assertionMode=None, assertSoftly=false, coroutineDebugProbes=false, testCoroutineDispatcher=false, coroutineTestScope=false, blockingTest=false), factoryId=null, parent=null)) Johnny5 is alive! Finished spec with result Success(duration=16ms) Finished spec with result Success(duration=109ms)
plaintextcopy
DSL methods with functions
import io.kotest.core.spec.AfterTest
import io.kotest.core.spec.BeforeTest
import io.kotest.core.spec.style.WordSpec
class MyTests : WordSpec({
val startTest: BeforeTest = { println("Starting a test $it") }
val endTest: AfterTest = { (test, result) -> println("Finished spec with result $result") }
beforeTest(startTest)
afterTest(endTest)
"this test" should {
"be alive" {
println("Johnny5 is alive!")
}
}
})
kotlincopy
Starting a test TestCase(descriptor=TestDescriptor(parent=SpecDescriptor(id=DescriptorId(value=com.example.demo.MyTests), kclass=class com.example.demo.MyTests), id=DescriptorId(value=this test)), name=TestName(testName=this test, focus=false, bang=false, prefix=null, suffix= should, defaultAffixes=true), spec=com.example.demo.MyTests@3d71d053, test=io.kotest.core.test.TestScope.() -> kotlin.Unit, source=FileSource(fileName=MyTests.kt, lineNumber=14), type=Container, config=ResolvedTestConfig(enabled=(io.kotest.core.test.TestCase) -> io.kotest.core.test.Enabled, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], extensions=[], severity=NORMAL, failfast=false, assertionMode=None, assertSoftly=false, coroutineDebugProbes=false, testCoroutineDispatcher=false, coroutineTestScope=false, blockingTest=false), factoryId=null, parent=null) Starting a test TestCase(descriptor=TestDescriptor(parent=TestDescriptor(parent=SpecDescriptor(id=DescriptorId(value=com.example.demo.MyTests), kclass=class com.example.demo.MyTests), id=DescriptorId(value=this test)), id=DescriptorId(value=be alive)), name=TestName(testName=be alive, focus=false, bang=false, prefix=null, suffix=null, defaultAffixes=false), spec=com.example.demo.MyTests@3d71d053, test=io.kotest.core.test.TestScope.() -> kotlin.Unit, source=FileSource(fileName=MyTests.kt, lineNumber=15), type=Test, config=ResolvedTestConfig(enabled=(io.kotest.core.test.TestCase) -> io.kotest.core.test.Enabled, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], extensions=[], severity=NORMAL, failfast=false, assertionMode=None, assertSoftly=false, coroutineDebugProbes=false, testCoroutineDispatcher=false, coroutineTestScope=false, blockingTest=false), factoryId=null, parent=TestCase(descriptor=TestDescriptor(parent=SpecDescriptor(id=DescriptorId(value=com.example.demo.MyTests), kclass=class com.example.demo.MyTests), id=DescriptorId(value=this test)), name=TestName(testName=this test, focus=false, bang=false, prefix=null, suffix= should, defaultAffixes=true), spec=com.example.demo.MyTests@3d71d053, test=io.kotest.core.test.TestScope.() -> kotlin.Unit, source=FileSource(fileName=MyTests.kt, lineNumber=14), type=Container, config=ResolvedTestConfig(enabled=(io.kotest.core.test.TestCase) -> io.kotest.core.test.Enabled, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], extensions=[], severity=NORMAL, failfast=false, assertionMode=None, assertSoftly=false, coroutineDebugProbes=false, testCoroutineDispatcher=false, coroutineTestScope=false, blockingTest=false), factoryId=null, parent=null)) Johnny5 is alive! Finished spec with result Success(duration=16ms) Finished spec with result Success(duration=108ms)
plaintextcopy
Overriding callback functions in a Spec
import io.kotest.core.spec.style.WordSpec
import io.kotest.core.test.TestCase
class MyTests : WordSpec() {
override suspend fun beforeTest(testCase: TestCase) {
println("Starting a test $testCase")
}
init {
"this test" should {
"be alive" {
println("Johnny5 is alive!")
}
}
}
}
kotlincopy
Starting a test TestCase(descriptor=TestDescriptor(parent=SpecDescriptor(id=DescriptorId(value=com.example.demo.MyTests), kclass=class com.example.demo.MyTests), id=DescriptorId(value=this test)), name=TestName(testName=this test, focus=false, bang=false, prefix=null, suffix= should, defaultAffixes=true), spec=com.example.demo.MyTests@1cc3eb37, test=io.kotest.core.test.TestScope.() -> kotlin.Unit, source=ClassSource(fqn=com.example.demo.MyTests, lineNumber=12), type=Container, config=ResolvedTestConfig(enabled=(io.kotest.core.test.TestCase) -> io.kotest.core.test.Enabled, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], extensions=[], severity=NORMAL, failfast=false, assertionMode=None, assertSoftly=false, coroutineDebugProbes=false, testCoroutineDispatcher=false, coroutineTestScope=false, blockingTest=false), factoryId=null, parent=null) Starting a test TestCase(descriptor=TestDescriptor(parent=TestDescriptor(parent=SpecDescriptor(id=DescriptorId(value=com.example.demo.MyTests), kclass=class com.example.demo.MyTests), id=DescriptorId(value=this test)), id=DescriptorId(value=be alive)), name=TestName(testName=be alive, focus=false, bang=false, prefix=null, suffix=null, defaultAffixes=false), spec=com.example.demo.MyTests@1cc3eb37, test=io.kotest.core.test.TestScope.() -> kotlin.Unit, source=FileSource(fileName=MyTests.kt, lineNumber=13), type=Test, config=ResolvedTestConfig(enabled=(io.kotest.core.test.TestCase) -> io.kotest.core.test.Enabled, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], extensions=[], severity=NORMAL, failfast=false, assertionMode=None, assertSoftly=false, coroutineDebugProbes=false, testCoroutineDispatcher=false, coroutineTestScope=false, blockingTest=false), factoryId=null, parent=TestCase(descriptor=TestDescriptor(parent=SpecDescriptor(id=DescriptorId(value=com.example.demo.MyTests), kclass=class com.example.demo.MyTests), id=DescriptorId(value=this test)), name=TestName(testName=this test, focus=false, bang=false, prefix=null, suffix= should, defaultAffixes=true), spec=com.example.demo.MyTests@1cc3eb37, test=io.kotest.core.test.TestScope.() -> kotlin.Unit, source=ClassSource(fqn=com.example.demo.MyTests, lineNumber=12), type=Container, config=ResolvedTestConfig(enabled=(io.kotest.core.test.TestCase) -> io.kotest.core.test.Enabled, invocations=1, threads=1, timeout=null, invocationTimeout=null, tags=[], extensions=[], severity=NORMAL, failfast=false, assertionMode=None, assertSoftly=false, coroutineDebugProbes=false, testCoroutineDispatcher=false, coroutineTestScope=false, blockingTest=false), factoryId=null, parent=null)) Johnny5 is alive!
plaintextcopy
ProjectListener
import io.kotest.core.annotation.AutoScan
import io.kotest.core.listeners.AfterProjectListener
import io.kotest.core.listeners.BeforeProjectListener
@AutoScan
class ProjectListener : BeforeProjectListener, AfterProjectListener {
override suspend fun beforeProject() {
println("beforeProject")
}
override suspend fun afterProject() {
println("afterProject")
}
}
kotlincopy
import io.kotest.core.spec.style.FunSpec
class DemoTest1 : FunSpec({
test("test1") {
println("test1")
}
})
kotlincopy
import io.kotest.core.spec.style.FunSpec
class DemoTest2 : FunSpec({
test("test2") {
println("test2")
}
})
kotlincopy
beforeProject test1 test2 afterProject
bashcopy
반응형
'Development > Kotest' 카테고리의 다른 글
[Kotest] SpringBootTest (0) | 2023.11.04 |
---|---|
[Kotest] extensions (0) | 2023.11.04 |
[Kotest] isolation modes (0) | 2023.11.04 |
[Kotest] conditional evaluation (0) | 2023.11.04 |
[Kotest] testing styles (0) | 2023.11.04 |