Skip to content

Commit 4a0fc8b

Browse files
authored
[KTLN-843] Add samples (#1040)
* [KTLN-843] Add samples * [KTLN-843] Add samples * [KTLN-843] Add samples * [KTLN-843] Add samples
1 parent a4d0d18 commit 4a0fc8b

File tree

5 files changed

+159
-0
lines changed

5 files changed

+159
-0
lines changed

kotlin-testing/pom.xml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,47 @@
6464
<version>${junit-jupiter-params.version}</version>
6565
<scope>test</scope>
6666
</dependency>
67+
68+
<dependency>
69+
<groupId>io.kotest</groupId>
70+
<artifactId>kotest-runner-junit5-jvm</artifactId>
71+
<version>${kotest.version}</version>
72+
<scope>test</scope>
73+
</dependency>
74+
75+
<dependency>
76+
<groupId>io.kotest.extensions</groupId>
77+
<artifactId>kotest-extensions-testcontainers</artifactId>
78+
<version>${kotest-testcontainers.version}</version>
79+
<scope>test</scope>
80+
</dependency>
81+
82+
<dependency>
83+
<groupId>org.testcontainers</groupId>
84+
<artifactId>testcontainers</artifactId>
85+
<version>${testcontainers.version}</version>
86+
<scope>test</scope>
87+
</dependency>
88+
<dependency>
89+
<groupId>org.testcontainers</groupId>
90+
<artifactId>postgresql</artifactId>
91+
<version>${testcontainers.version}</version>
92+
<scope>test</scope>
93+
</dependency>
94+
95+
<dependency>
96+
<groupId>org.postgresql</groupId>
97+
<artifactId>postgresql</artifactId>
98+
<version>${postgresql.version}</version>
99+
</dependency>
100+
101+
<dependency>
102+
<groupId>io.mockk</groupId>
103+
<artifactId>mockk</artifactId>
104+
<version>${mockk.version}</version>
105+
<scope>test</scope>
106+
</dependency>
107+
67108
</dependencies>
68109

69110
<build>
@@ -89,6 +130,11 @@
89130
<atrium.version>1.2.0</atrium.version>
90131
<jqwik.version>1.8.5</jqwik.version>
91132
<junit-jupiter-params.version>5.9.1</junit-jupiter-params.version>
133+
<kotest.version>5.9.1</kotest.version>
134+
<kotest-testcontainers.version>2.0.2</kotest-testcontainers.version>
135+
<testcontainers.version>1.20.1</testcontainers.version>
136+
<postgresql.version>42.7.3</postgresql.version>
137+
<mockk.version>1.12.0</mockk.version>
92138
</properties>
93139

94140
</project>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.baeldung.testresources
2+
3+
import org.junit.jupiter.api.AfterAll
4+
import org.junit.jupiter.api.AfterEach
5+
import org.junit.jupiter.api.BeforeAll
6+
import org.junit.jupiter.api.BeforeEach
7+
import org.junit.jupiter.api.Test
8+
9+
class JUnitTestResourcesUnitTest {
10+
11+
companion object {
12+
@JvmStatic
13+
@BeforeAll
14+
fun setUpAll() {
15+
println("Initializing Resources Before All Tests")
16+
}
17+
18+
@JvmStatic
19+
@AfterAll
20+
fun tearDownAll() {
21+
println("Cleaning Resources After All Tests")
22+
}
23+
}
24+
25+
@BeforeEach
26+
fun setUp() {
27+
println("Initializing Resources Before Each Test")
28+
}
29+
30+
@AfterEach
31+
fun tearDown() {
32+
println("Cleaning Resources After Each Test")
33+
}
34+
35+
@Test
36+
fun testSomething() {
37+
println("Running Test")
38+
}
39+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.baeldung.testresources
2+
3+
import io.kotest.core.spec.style.StringSpec
4+
5+
class KotestTestResourcesUnitTest : StringSpec({
6+
7+
beforeSpec { println("Initializing Resources Before All Tests") }
8+
beforeTest { println("Initializing Resources Before Each Test") }
9+
afterTest { println("Cleaning Resources After Each Test") }
10+
afterSpec { println("Cleaning Resources After All Tests") }
11+
12+
"test something" {
13+
println("Running Test")
14+
}
15+
})
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.baeldung.testresources
2+
3+
import io.kotest.core.spec.style.StringSpec
4+
import io.kotest.matchers.shouldBe
5+
import io.mockk.clearMocks
6+
import io.mockk.every
7+
import io.mockk.mockk
8+
import io.mockk.verify
9+
10+
class OurClass(private val externalDependency: ExternalDependency) {
11+
fun doWork() = externalDependency.functionToBeMocked()
12+
}
13+
14+
class ExternalDependency {
15+
fun functionToBeMocked(): String = "Real Result"
16+
}
17+
18+
class MockkTestResourcesUnitTest : StringSpec({
19+
val externalDependency: ExternalDependency = mockk()
20+
val ourClass = OurClass(externalDependency)
21+
beforeTest {
22+
every { externalDependency.functionToBeMocked() } returns "mock response"
23+
}
24+
afterTest {
25+
clearMocks(externalDependency)
26+
}
27+
28+
"test doWork function" {
29+
val result = ourClass.doWork()
30+
result shouldBe "mock response"
31+
verify { externalDependency.functionToBeMocked() }
32+
}
33+
})
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.baeldung.testresources
2+
3+
import io.kotest.core.extensions.install
4+
import io.kotest.core.spec.style.StringSpec
5+
import io.kotest.extensions.testcontainers.JdbcDatabaseContainerExtension
6+
import io.kotest.matchers.shouldBe
7+
import org.testcontainers.containers.PostgreSQLContainer
8+
9+
/**
10+
* livetest. This class requires a docker environment to be setup on one's computer so that testcontainers can use
11+
* it.
12+
*/
13+
class TestContainersResourceManagementLiveTest : StringSpec({
14+
val dataSource = install(JdbcDatabaseContainerExtension(PostgreSQLContainer<Nothing>("postgres:latest")))
15+
16+
"test querying the database" {
17+
val result = dataSource.connection.use {
18+
it.createStatement().executeQuery("SELECT 1").use {
19+
it.next()
20+
it.getInt(1)
21+
}
22+
}
23+
24+
result shouldBe 1
25+
}
26+
})

0 commit comments

Comments
 (0)