微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

测试之间的 Kotlin mockito 冲突

如何解决测试之间的 Kotlin mockito 冲突

我的测试类中有几个测试在一起运行时失败了。当我单独运行它们时,它们都运行良好。所以我在多个测试中重用的模拟值肯定存在一些冲突。

示例如下:

@ExtendWith(SpringExtension::class)
@AutoConfiguremockmvc(addFilters = false)
class BerryStorageTest {
    private lateinit var BerryStorage: BerryStorage
    private lateinit var dataB: DataB

    @BeforeEach
    fun setup() {
        dataK = mock()
        whenever(dataB.berries).thenReturn(ConcurrentHashMap())
        this.BerryStorage = BerryStorage(dataB)
    }

@Test
    fun `when adding additional Berry to berries storage,number of berries increased`() {
        // reset(dataB)
        // dataB = mock()
        whenever(dataB.berries).thenReturn(berriesMapMock)
        BerryStorage.addBerry(additionalBerryMock)
        val resultBerries = dataB.berries

        assertthat(resultBerries.size).isEqualTo(2)
}

// Some other tests...
}

我错过了什么?我可以通过调试清楚地看到,当测试开始时,模拟值中有 2 个浆果,而不是 1 个值,因为它是在 berriesMapMock 中初始化的。所以断言失败,因为结果总共有 3 个浆果,而不是 2 个。其中一个来自另一个单元测试......

我有 @BeforeEach 方法来重新初始化模拟,但问题在我的几个测试中仍然存在。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。