diff --git a/.idea/gradle.xml b/.idea/gradle.xml index e8f0d7d..e75b5e3 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -16,7 +16,6 @@ - diff --git a/furufuru/build.gradle b/furufuru/build.gradle index d52586d..de6fb8c 100644 --- a/furufuru/build.gradle +++ b/furufuru/build.gradle @@ -147,7 +147,7 @@ dependencies { testImplementation "android.arch.core:core-testing:1.1.1" // mockk - ext.mockk = "1.12.3" + ext.mockk = "1.12.7" testImplementation "io.mockk:mockk:${mockk}" testImplementation "io.mockk:mockk-agent-jvm:${mockk}" diff --git a/furufuru/src/test/java/dev/iaiabot/furufuru/feature/ExampleUnitTest.kt b/furufuru/src/test/java/dev/iaiabot/furufuru/feature/ExampleUnitTest.kt index 483e6bd..7fac8e5 100644 --- a/furufuru/src/test/java/dev/iaiabot/furufuru/feature/ExampleUnitTest.kt +++ b/furufuru/src/test/java/dev/iaiabot/furufuru/feature/ExampleUnitTest.kt @@ -1,16 +1,33 @@ package dev.iaiabot.furufuru.feature +import dev.iaiabot.furufuru.usecase.MyExtension import org.junit.Assert.assertEquals -import org.junit.Test +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith /** * Example local unit test, which will execute on the development machine (host). * * See [testing documentation](http://d.android.com/tools/testing). */ + +@ExtendWith(MyExtension::class) class ExampleUnitTest { @Test fun addition_isCorrect() { + println("test1") + assertEquals(4, 2 + 2) + } + + @Test + fun hoge() { + println("test2") + assertEquals(4, 2 + 2) + } + + @Test + fun fuga() { + println("test3") assertEquals(4, 2 + 2) } } diff --git a/furufuru/src/test/java/dev/iaiabot/furufuru/usecase/GetScreenShotUseCaseImplTest.kt b/furufuru/src/test/java/dev/iaiabot/furufuru/usecase/GetScreenShotUseCaseImplTest.kt index 9ae8238..490f418 100644 --- a/furufuru/src/test/java/dev/iaiabot/furufuru/usecase/GetScreenShotUseCaseImplTest.kt +++ b/furufuru/src/test/java/dev/iaiabot/furufuru/usecase/GetScreenShotUseCaseImplTest.kt @@ -1,14 +1,20 @@ package dev.iaiabot.furufuru.usecase import com.google.common.truth.Truth.assertThat +import dev.iaiabot.furufuru.feature.ui.issue.IssueBodyTemplate import dev.iaiabot.furufuru.repository.ScreenshotRepository import dev.iaiabot.furufuru.testtool.initMockOnGroup import io.mockk.coEvery +import io.mockk.junit5.MockKExtension +import io.mockk.mockkObject import kotlinx.coroutines.flow.flow import kotlinx.coroutines.runBlocking +import org.junit.jupiter.api.TestInstance +import org.junit.jupiter.api.extension.* import org.spekframework.spek2.Spek import org.spekframework.spek2.style.specification.describe +@ExtendWith(MyExtension::class) internal object GetScreenShotUseCaseImplTest : Spek({ lateinit var usecase: GetScreenShotUseCase val screenshotRepository = initMockOnGroup() @@ -16,6 +22,7 @@ internal object GetScreenShotUseCaseImplTest : Spek({ describe("#getScreenShot()") { context("スクリーンショットがある場合") { beforeGroup { + mockkObject(IssueBodyTemplate) coEvery { screenshotRepository.observe() } returns flow { emit("SCREEN_SHOT") } usecase = GetScreenShotUseCaseImpl( screenshotRepository, @@ -31,3 +38,18 @@ internal object GetScreenShotUseCaseImplTest : Spek({ } } }) + +open class MyExtension: Extension, BeforeEachCallback, BeforeAllCallback, AfterAllCallback { + + override fun beforeEach(context: ExtensionContext?) { + println("furufuru before each") + } + + override fun beforeAll(context: ExtensionContext?) { + println("furufuru before all") + } + + override fun afterAll(context: ExtensionContext?) { + println("furufuru after all") + } +} diff --git a/furufuru/src/test/java/dev/iaiabot/furufuru/usecase/PostIssueUseCaseImplTest.kt b/furufuru/src/test/java/dev/iaiabot/furufuru/usecase/PostIssueUseCaseImplTest.kt index 05f3b2c..2b34c5f 100644 --- a/furufuru/src/test/java/dev/iaiabot/furufuru/usecase/PostIssueUseCaseImplTest.kt +++ b/furufuru/src/test/java/dev/iaiabot/furufuru/usecase/PostIssueUseCaseImplTest.kt @@ -10,13 +10,16 @@ import dev.iaiabot.furufuru.usecase.user.SaveUsernameUseCase import dev.iaiabot.furufuru.util.GithubSettings import io.mockk.coEvery import io.mockk.every +import io.mockk.junit5.MockKExtension import io.mockk.mockk import io.mockk.mockkObject import kotlinx.coroutines.runBlocking import org.junit.Assert.fail +import org.junit.jupiter.api.extension.ExtendWith import org.spekframework.spek2.Spek import org.spekframework.spek2.style.specification.describe +@ExtendWith(MockKExtension::class) internal object PostIssueUseCaseImplTest : Spek({ lateinit var usecase: PostIssueUseCase val issueRepository = initMockOnGroup() @@ -34,7 +37,6 @@ internal object PostIssueUseCaseImplTest : Spek({ every { imageUrl } returns "image" } every { githubSettings.furufuruBranch } returns "furufuru-branch" - mockkObject(IssueBodyTemplate) every { IssueBodyTemplate.createBody(any(), any(), any(), any()) } returns "ISSUE_BODY" coEvery { issueRepository.post(any()) } returns Unit coEvery { saveUsernameUseCase(any()) } returns Unit diff --git a/furufuru/src/test/resources/junit-platform.properties b/furufuru/src/test/resources/junit-platform.properties new file mode 100644 index 0000000..b3823ff --- /dev/null +++ b/furufuru/src/test/resources/junit-platform.properties @@ -0,0 +1,2 @@ +junit.jupiter.testinstance.lifecycle.default=per_class +junit.extensions.autodetection.enabled=true