Setting up PITest for Guava

1

I'm trying to set up PIT for Guava (http://pitest.org/) to do mutation adequecy testing, but I am getting the following error when trying to run it. This is the error that I get :

12:19:47 PM PIT >> INFO : Sending 32 test classes to minion
12:19:47 PM PIT >> INFO : Sent tests to minion
12:19:48 PM PIT >> INFO : MINION : 12:19:48 PM PIT >> INFO : Checking environment

12:19:48 PM PIT >> INFO : MINION : 12:19:48 PM PIT >> INFO : Found  40 tests

12:19:48 PM PIT >> INFO : MINION : 12:19:48 PM PIT >> INFO : Dependency analysis reduced number of potential tests by 0

12:19:48 PM PIT >> INFO : MINION : 12:19:48 PM PIT >> INFO : 40 tests received

12:19:53 PM PIT >> INFO : MINION : Dec 06, 2016 12:19:53 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.

12:19:54 PM PIT >> INFO : MINION : 12:19:54 PM PIT >> WARNING : More threads at end of test (7) testCantRemove(com.google.common.collect.AbstractIteratorTest_gwt) than start. (5)


/
-
|
/
\
-12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractIteratorTest_gwt, name=testCantRemove(com.google.common.collect.AbstractIteratorTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractIteratorTest_gwt, name=testDefaultBehaviorOfNextAndHasNext(com.google.common.collect.AbstractIteratorTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractIteratorTest_gwt, name=testDefaultBehaviorOfPeek(com.google.common.collect.AbstractIteratorTest_gwt)] did not pass without mutation.

/12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractIteratorTest_gwt, name=testDefaultBehaviorOfPeekForEmptyIteration(com.google.common.collect.AbstractIteratorTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractIteratorTest_gwt, name=testException(com.google.common.collect.AbstractIteratorTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractIteratorTest_gwt, name=testExceptionAfterEndOfData(com.google.common.collect.AbstractIteratorTest_gwt)] did not pass without mutation.

\12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractIteratorTest_gwt, name=testReentrantHasNext(com.google.common.collect.AbstractIteratorTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractIteratorTest_gwt, name=testSneakyThrow(com.google.common.collect.AbstractIteratorTest_gwt)] did not pass without mutation.

/
|
/
|
/12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractMapEntryTest_gwt, name=testEquals(com.google.common.collect.AbstractMapEntryTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractMapEntryTest_gwt, name=testEqualsNull(com.google.common.collect.AbstractMapEntryTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractMapEntryTest_gwt, name=testHashCode(com.google.common.collect.AbstractMapEntryTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractMapEntryTest_gwt, name=testHashCodeNull(com.google.common.collect.AbstractMapEntryTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractMapEntryTest_gwt, name=testToString(com.google.common.collect.AbstractMapEntryTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractMapEntryTest_gwt, name=testToStringNull(com.google.common.collect.AbstractMapEntryTest_gwt)] did not pass without mutation.

|12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractSequentialIteratorTest_gwt, name=testBroken(com.google.common.collect.AbstractSequentialIteratorTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractSequentialIteratorTest_gwt, name=testDoubler(com.google.common.collect.AbstractSequentialIteratorTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractSequentialIteratorTest_gwt, name=testEmpty(com.google.common.collect.AbstractSequentialIteratorTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> WARNING : Description [testClass=com.google.common.collect.AbstractSequentialIteratorTest_gwt, name=testSampleCode(com.google.common.collect.AbstractSequentialIteratorTest_gwt)] did not pass without mutation.
12:19:54 PM PIT >> INFO : Calculated coverage in 9 seconds.
Exception in thread "main" org.pitest.help.PitHelpError: All tests did not pass without mutation when calculating line coverage. Mutation testing requires a green suite.
See http://pitest.org for more details.
    at org.pitest.coverage.execute.DefaultCoverageGenerator.verifyBuildSuitableForMutationTesting(DefaultCoverageGenerator.java:109)
    at org.pitest.coverage.execute.DefaultCoverageGenerator.calculateCoverage(DefaultCoverageGenerator.java:94)
    at org.pitest.coverage.execute.DefaultCoverageGenerator.calculateCoverage(DefaultCoverageGenerator.java:49)
    at org.pitest.mutationtest.tooling.MutationCoverage.runReport(MutationCoverage.java:110)
    at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:103)
    at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:45)
    at org.pitest.mutationtest.commandline.MutationCoverageReport.runReport(MutationCoverageReport.java:76)
    at org.pitest.mutationtest.commandline.MutationCoverageReport.main(MutationCoverageReport.java:45)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Basically, either PIT isn't detecting the tests, or the tests aren't running properly with PIT and all the tests fail. I read this post : JUnit tests pass but PIT says the suite isn't green and I think "Does your codebase include mutable static state? (e.g in singletons)" is the problem, but I have no idea how to fix it. In the case that the test suite has some hidden order dependency, how can make it so I can run PIT on it? Or is the test suite simply incompatible with PIT?

java
junit
guava
mutation-testing
pitest
asked on Stack Overflow Dec 6, 2016 by John Kim • edited May 23, 2017 by Community

1 Answer

1

The problem is most likely that PIT is running GWT test cases - these are not unit tests in the normal sense of the word as the code is not run within the JVM, but is instead translated to Java script and run in a browser.

PIT only works with code that runs within the same JVM as the tests that exercise it.

If you exclude the guava gwt test cases PIT whould be happier.

answered on Stack Overflow Jan 5, 2017 by henry

User contributions licensed under CC BY-SA 3.0