jacoco-android-gradle-plugin
jacoco-android-gradle-plugin copied to clipboard
PowerMockito @PrepareForTest disables JaCoCo
When using PowerMock in the unit tests, the classes declared with @PrepareForTest
don't get coverage info due to following error:
[ant:jacocoReport] Classes in bundle 'app' do no match with execution data. For report generation the same class files must be used as at runtime.
[ant:jacocoReport] Execution data for class com/example/android/ExampleClassA does not match.
[ant:jacocoReport] Execution data for class com/example/android/ExampleClassB does not match.
After a small research I've found out that it's a known issue of jacoco regarding javassist/javaagent:
https://github.com/powermock/powermock/issues/422 https://github.com/jacoco/eclemma/issues/15
But unfortunately, I wasn't able to make the fix of the issue, as suggested for maven by using the custom java agent of PowerMock library, to work for gradle, because I couldn't declare a jar file from dependencies (powermock-api-mockito2-1.7.4.jar) as a custom java agent in gradle, as done in this workaround:
http://stevendick.github.io/blog/2012/02/12/jacoco-and-gradle-part-2/
It failed, since the java plugin is conflicting with the android plugin.
I found a workaround to this issue. Basically, you'll need to create a new Test-class for the class prepared for test by Powermock
. This will reset any changes made by PowerMock
to the class.
I found a workaround to this issue. Basically, you'll need to create a new Test-class for the class prepared for test by
Powermock
. This will reset any changes made byPowerMock
to the class.
Could you provide an example with working code?
Thanks, John
I found a workaround to this issue. Basically, you'll need to create a new Test-class for the class prepared for test by
Powermock
. This will reset any changes made byPowerMock
to the class.
any working code ?
Could you provide an example with working code?
Could anyone please provide workaround for this?