当我一起运行它们时,我的测试类中有几个测试失败了。当我单独运行它们时,它们都运行良好。因此,我在多个测试中重用的模拟值必须存在一些冲突。
这是示例:
@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 方法来重新初始化模拟,但是在我的几个测试中问题仍然存在。