Kotlin异步回调单元测试

时间:2020-02-11 10:17:00

标签: unit-testing kotlin mockito

我有课:

class SomeClass(private val executor: Executor) {
        fun doSomething(id: Int, callback: (String, Int) -> Unit) {
            executor.execute {
                val intValue = id + 1
                val stringValue = "Some string result"
                callback(stringValue, intValue)
            }
        }
    } 

如何为doSomething方法创建单元测试?

1 个答案:

答案 0 :(得分:0)

我已经研究了这个问题大约3天。我希望可以使用Mockito解决此问题。幸运的是,今天我发现了ConcurrentUnit个用于测试异步代码的工具。

我的解决方案:

val executor = Executors.newSingleThreadExecutor()
lateinit var someClass = SomeClass(executor)

@Test
fun test() {
    val waiter = Waiter()
    someClass.doSomething(1) { string, int ->
        waiter.assertNotNull(string)
        waiter.assertEquals(int, 2)
        waiter.resume()
    }
    waiter.await(100, TimeUnit.MILLISECONDS)
}

感谢您的帮助!