【问题标题】:Code Coverage Inline Function代码覆盖率内联函数
【发布时间】:2017-05-18 21:04:37
【问题描述】:

我有这个用 Kotlin 编写的函数

inline fun <T> handleEmptyResult(observable: Observable<T>,
                                 crossinline resultEmptyCheckingFunc: (obj: T?) -> Boolean): Observable<T> {
    return observable
        .flatMap {
            if (resultEmptyCheckingFunc(it)) {
                Observable.error<T>(ResultEmptyError(Throwable()))
            } else {
                Observable.just(it)
            }
        }
}

但是当我为这个函数创建单元测试时,它在报告中显示 0 覆盖率。我正在使用 jacoco 进行代码覆盖。你们知道如何正确地对内联函数进行单元测试吗? 谢谢!

【问题讨论】:

标签: android unit-testing code-coverage kotlin inline-functions


【解决方案1】:

由于代码是内联的,在你的测试中没有调用这个函数,jacoco 认为你从不使用它。

一条建议:忘记测试覆盖率,它完全没用。一个项目可以有很好的测试和 30% 的覆盖率。或者有人可以花费大量时间来获得 100% 的覆盖率,但在生产中仍然存在数十个错误。我都看过了。

【讨论】:

  • 啊,原来如此。感谢@voddan 的建议
  • 上述回复没有回答问题
  • 不过,当不清楚哪些代码路径被使用/覆盖哪些不被使用时,覆盖率还是很好,尤其是在遗留代码中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 2012-11-22
  • 2018-01-11
  • 1970-01-01
  • 2016-11-29
  • 2017-05-03
相关资源
最近更新 更多