【问题标题】:Kotlin async callback unit testKotlin 异步回调单元测试
【发布时间】:2020-02-11 10:17:00
【问题描述】:

我有一堂课:

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 方法创建单元测试?

【问题讨论】:

  • 请花一些时间研究您的案例并提出具体问题,而不是要求完整的实施
  • 这种用例真的需要coroutines,老实说,它会让测试变得微不足道。如果您想坚持使用执行器版本,那么也许您可以为您的测试提供一个特殊的执行器。

标签: unit-testing kotlin mockito


【解决方案1】:

我已经研究了这个问题大约 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)
}

感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2022-10-01
    相关资源
    最近更新 更多