代码覆盖内联函数

时间:2017-01-04 14:21:37

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

我用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进行代码覆盖。你们知道如何正确地测试内联功能吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

由于代码是内联的,因此测试中不会调用此函数,jacoco认为您从未使用它。

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