arturdm / jacoco-android-gradle-plugin

Gradle plugin that creates JaCoCo test reports for Android unit tests
Apache License 2.0
561 stars 111 forks source link

PowerMockito @PrepareForTest disables JaCoCo #49

Open mmert1988 opened 6 years ago

mmert1988 commented 6 years ago

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.

sachinlohith commented 5 years ago

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.

johnbrown8976 commented 5 years ago

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.

Could you provide an example with working code?

Thanks, John

ghost commented 4 years ago

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.

any working code ?

allefsousa commented 4 years ago

Could you provide an example with working code?

Poojashivaswamy commented 2 years ago

Could anyone please provide workaround for this?