0

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

这是示例:

@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 个浆果,而不是在 berriesMapMock 中初始化的 1 个值。所以断言失败,因为结果总共有 3 个浆果,而不是 2 个。其中一个来自另一个单元测试......

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

4

0 回答 0