Android 数据 class 单元测试
Android data class unit test
我下面有一个数据class -
data class MyViewState(
val loading: Boolean = false,
val data: String? = null,
val error: String? = null
)
我有一个简单的 JUnit4 测试 -
@Test
fun testLoading() {
val myViewState = MyViewState()
myViewState.copy(loading = true)
assertEquals(myViewState.loading, true)
}
测试失败。给我 -
java.lang.AssertionError:
Expected :false
Actual :true
您的断言正在检查未更改的 myViewState 的值。
将 copy
的结果存储在一个新对象中并对其进行测试。
@Test
fun testLoading() {
val myViewState = MyViewState()
val myNewViewState = myViewState.copy(loading = true)
assertEquals(myNewViewState.loading, true)
}
问题是您正在测试旧对象,而不是复制的对象。
改为这样做:
@Test
fun testLoading() {
val myViewState = MyViewState()
val myViewStateCopy = myViewState.copy(loading = true)
assertEquals(true, myViewStateCopy.loading)
}
您正在检查原始对象中的值。使用这个:
@Test
fun testLoading() {
val myViewState = MyViewState()
val myViewStateCopy = myViewState.copy(loading = true)
assertEquals(true, myViewStateCopy.loading)
}
另请注意,您的期望值应该是 assertEquals()
的第一个参数
我下面有一个数据class -
data class MyViewState(
val loading: Boolean = false,
val data: String? = null,
val error: String? = null
)
我有一个简单的 JUnit4 测试 -
@Test
fun testLoading() {
val myViewState = MyViewState()
myViewState.copy(loading = true)
assertEquals(myViewState.loading, true)
}
测试失败。给我 -
java.lang.AssertionError:
Expected :false
Actual :true
您的断言正在检查未更改的 myViewState 的值。
将 copy
的结果存储在一个新对象中并对其进行测试。
@Test
fun testLoading() {
val myViewState = MyViewState()
val myNewViewState = myViewState.copy(loading = true)
assertEquals(myNewViewState.loading, true)
}
问题是您正在测试旧对象,而不是复制的对象。
改为这样做:
@Test
fun testLoading() {
val myViewState = MyViewState()
val myViewStateCopy = myViewState.copy(loading = true)
assertEquals(true, myViewStateCopy.loading)
}
您正在检查原始对象中的值。使用这个:
@Test
fun testLoading() {
val myViewState = MyViewState()
val myViewStateCopy = myViewState.copy(loading = true)
assertEquals(true, myViewStateCopy.loading)
}
另请注意,您的期望值应该是 assertEquals()