2017-01-04 13 views
1

У меня есть эта функция, написанная на КотлинПокрытие кода Встроенные функции

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 для покрытия кода. Вы, ребята, знаете, как правильно выполнить встроенную функцию тестирования? Спасибо!

+0

Это ошибка Kotlin, в настоящее время зарегистрированная здесь: https://youtrack.jetbrains.com/issue/KT-12605 – Max

+0

Возможный дубликат [Нет отчета о покрытии для встроенных методов Kotlin] (https://stackoverflow.com/ вопросы/39817814/no-coverage-report-for-inlined-kotlin-methods) –

ответ

1

Поскольку код встроен, в ваших тестах нет вызовов к этой функции, а jacoco считает, что вы никогда не используете его.

Советуйте: забудьте о пробном покрытии, это абсолютно бесполезно. Проект может иметь отличные тесты и 30% охвата. Или кто-то может потратить кучу времени, чтобы получить 100% -ый охват, и все еще есть десятки ошибок в производстве. Я видел и то, и другое.

+0

А я вижу, так что причина. Спасибо за совет @voddan – elsennov

+1

Вышеуказанный ответ не отвечает на вопрос btw –