在 Kotlin 中,可以使用 JUnit 和 Mockito 等測試框架對伴生對象(companion object)進(jìn)行單元測試。以下是一個簡單的示例,展示了如何對伴生對象進(jìn)行單元測試:
首先,這是一個包含伴生對象的 Kotlin 類:
class Calculator {
companion object {
fun add(a: Int, b: Int): Int {
return a + b
}
}
}
接下來,我們將編寫一個測試類來測試 Calculator
類的伴生對象中的 add
函數(shù):
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Assertions.assertEquals
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock
class CalculatorTest {
@Test
fun testAdd() {
// 創(chuàng)建一個伴生對象的 mock 實(shí)例
val calculatorMock = mock(Calculator::class.java)
// 使用 Mockito 的 `when` 方法定義當(dāng)調(diào)用 `add` 函數(shù)時應(yīng)該返回的值
`when`(calculatorMock.add(1, 2)).thenReturn(3)
// 調(diào)用伴生對象的 `add` 函數(shù)并驗(yàn)證結(jié)果
val result = calculatorMock.add(1, 2)
assertEquals(3, result)
// 驗(yàn)證 `add` 函數(shù)是否被正確調(diào)用
`when`(calculatorMock.add(3, 4)).thenReturn(7)
val result2 = calculatorMock.add(3, 4)
assertEquals(7, result2)
}
}
在這個示例中,我們首先使用 Mockito 創(chuàng)建了一個 Calculator
類的伴生對象的 mock 實(shí)例。然后,我們使用 when
方法定義了當(dāng)調(diào)用 add
函數(shù)時應(yīng)該返回的值。最后,我們調(diào)用伴生對象的 add
函數(shù)并驗(yàn)證結(jié)果是否符合預(yù)期。