如何为单例类kotlin编写单元测试用例

问题描述 投票:0回答:1

我想释放当前实例,但不在这里工作有没有更简单的方法来处理它。

我有一个类 -> DownloadManager,它是单例的

我有一个 @Before 测试,它总是执行单元测试用例,我最初是这个 DownloadManager,请找到下面的类示例。

@Before
fun setup() {
    sut = spyk(DownloadManager()
}

 @Test
fun `Given DownloadInitialiser Init`() {
    // Given
    val randomID = "ID+${System.nanoTime()}"

    mockkObject(BuildInfo)
    every { BuildInfo.model() } returns "Nokia"
    val koinInitialiser = mockk<KoinInitialiser<String>>(relaxed = true)

    every { createKoin<String>() } returns koinInitialiser
    every {
        koinInitialiser.start(
            context,
            contentResolverService
        )
    } returns
            koinApplication { modules(modules) }.koin

    // When
    runBlocking {
        sut.init(context, downloadConfigProvider)
    }

    // Then
    verify {
        koinInitialiser.start(
            context,
            downloadConfigProvider
        )
    }
    unmockkObject(BuildInfo)
kotlin unit-testing singleton android-unit-testing
1个回答
0
投票

您应该使用tearDown()方法释放实例,

@After
    fun tearDown() {
        sut.close()
    }

它将确保downloadManager实例在测试方法之后正确关闭,从而避免潜在的资源泄漏。

© www.soinside.com 2019 - 2024. All rights reserved.