Java 使用Junit的回调单元测试用例
我正在尝试为一个类编写一些单元测试用例,该类的函数以回调作为参数(请参见下面的代码) 单元测试用例是Java 使用Junit的回调单元测试用例,java,android,kotlin,junit4,Java,Android,Kotlin,Junit4,我正在尝试为一个类编写一些单元测试用例,该类的函数以回调作为参数(请参见下面的代码) 单元测试用例是 @RunWith(AndroidJUnit4::class) class NetworkApiTest { var networkApi: NetworkApi? = null @Test fun testEmptyToken() { networkApi = NetworkApi("") networkApi?.getToken {
@RunWith(AndroidJUnit4::class)
class NetworkApiTest {
var networkApi: NetworkApi? = null
@Test
fun testEmptyToken() {
networkApi = NetworkApi("")
networkApi?.getToken {
Assert.assertThat(it, isEmptyOrNullString())
}
}
}
无论何时我运行这个测试用例,无论我发送什么值,我都会获得成功。我知道我做得不完全正确。
有人能帮我在JUnit中为类编写单元测试用例吗。问题是,在调用回调之前测试就完成了,而断言在错误的线程中。 您必须将回调的结果复制回主线程。使用一个。 如果您希望在一段时间后测试失败,可以使用带有超时值的
get
方法:
@RunWith(AndroidJUnit4::class)
class NetworkApiTest {
var networkApi: NetworkApi? = null
@Test
fun testEmptyToken() {
val future = CompletableFuture<String>()
networkApi = NetworkApi("")
networkApi?.getToken {
future.complete(it)
}
val result = future.get(3,TimeUnit.SECONDS)
Assert.assertThat(it, isEmptyOrNullString())
}
}
@RunWith(AndroidJUnit4::class)
类网络测试{
var networkApi:networkApi?=null
@试验
有趣的测试{
val future=CompletableFuture()
networkApi=networkApi(“”)
networkApi?.getToken{
未来。完成(it)
}
val结果=future.get(3,TimeUnit.SECONDS)
Assert.assertThat(它,isEmptyOrNullString())
}
}
问题在于,在调用回调之前,测试完成,并且断言
位于错误的线程中。
您必须将回调的结果复制回主线程。使用一个。
如果您希望在一段时间后测试失败,可以使用带有超时值的get
方法:
@RunWith(AndroidJUnit4::class)
class NetworkApiTest {
var networkApi: NetworkApi? = null
@Test
fun testEmptyToken() {
val future = CompletableFuture<String>()
networkApi = NetworkApi("")
networkApi?.getToken {
future.complete(it)
}
val result = future.get(3,TimeUnit.SECONDS)
Assert.assertThat(it, isEmptyOrNullString())
}
}
@RunWith(AndroidJUnit4::class)
类网络测试{
var networkApi:networkApi?=null
@试验
有趣的测试{
val future=CompletableFuture()
networkApi=networkApi(“”)
networkApi?.getToken{
未来。完成(it)
}
val结果=future.get(3,TimeUnit.SECONDS)
Assert.assertThat(它,isEmptyOrNullString())
}
}