Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No coverage report for inlined Kotlin methods

Kotlin functions marked with inline keyword are, well, inlined during the compilation and it seems that code coverage tools (like JaCoCo) fail to properly calculate code coverage. What is the usual approach to overcoming this issue? Is there a way to make the test somehow avoid the inlining step and invoke the tested methods directly? Is it possible to skip report generation of all inlined methods (via Gradle task, for example) without excluding whole classes?

like image 894
Czyzby Avatar asked Oct 02 '16 14:10

Czyzby


3 Answers

I don't believe it is possible to turn off inlining since some functions may not make any sense if they are not inlined. These include functions with reified types (since the inlining creates the availability of type information) and functions with lambdas as parameters, since they can affect the control flow of the method they are inlined in.

like image 85
Kiskae Avatar answered Nov 20 '22 14:11

Kiskae


There is the bug in the JetBrains Java Coverage tools, see https://youtrack.jetbrains.com/issue/KT-12605 .

So, just wait until bug will be fixed (or vote on it, to speedup development)

like image 38
Manushin Igor Avatar answered Nov 20 '22 14:11

Manushin Igor


Kotlin team has introduced the Kover plugin with the goal of supporting all language constructs including inline functions.

like image 29
Czyzby Avatar answered Nov 20 '22 15:11

Czyzby