1

Ich habe diese Funktion in Kotlin geschriebenCode Coverage Inline Funktion

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) 
      } 
     } 
} 

Aber wenn ich für diese Funktion Unit-Tests erstellt, zeigt es 0 Berichterstattung über den Bericht. Ich benutze jacoco für die Codeabdeckung. Weißt du, wie man die Inline-Funktion richtig einrichtet? Danke!

+0

Dies ist ein Kotlin-Bug, derzeit hier angemeldet: https://youtrack.jetbrains.com/issue/KT-12605 – Max

+0

Mögliche Duplikate von [Kein Coverage-Bericht für inlined Kotlin-Methoden] (https://stackoverflow.com/) fragen/39817814/no-coverage-report-for-inlined-kotlin-methoden) –

Antwort

1

Da der Code inline ist, gibt es keine Aufrufe dieser Funktion in Ihren Tests, und jacoco denkt, dass Sie es nie verwenden.

Ein Tipp: Vergessen Sie die Testabdeckung, es ist völlig nutzlos. Ein Projekt kann großartige Tests und eine 30% ige Abdeckung haben. Oder jemand kann eine Menge Zeit damit verbringen, 100% Deckung zu bekommen, und trotzdem Dutzende von Fehlern in der Produktion haben. Ich habe beides gesehen.

+0

Ah ich sehe, also das ist der Grund. Danke für den Hinweis @voddan – elsennov

+1

Die obige Antwort beantwortet nicht die Frage BTW –