Open akuma8 opened 5 years ago
We've hit the same problem with assertj-assertions-generator-maven-plugin:2.2.0.
We found that a mvn clean test
causes the assertions to be created correctly, but any subsequent mvn test
will fail with the above issue.
We're using JDK11/Maven 3.6.0/JUnit 5 in our tech stack. A workaround for our particular case is to add an explicit dependency on JUnit 4 in the plugin's declaration:
<plugin>
<groupId>org.assertj</groupId>
<artifactId>assertj-assertions-generator-maven-plugin</artifactId>
<version>2.2.0</version>
<executions>
<execution>
<goals>
<goal>generate-assertions</goal>
</goals>
</execution>
</executions>
<configuration>
....
</configuration>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
</dependencies>
</plugin>
I run into the same error when running mvn -Dit.test='testClassName.testMethodNameWithSpaces' verify
.
My running environment is
Picked up _JAVA_OPTIONS: -Duser.home=/home
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/share/maven
Java version: 1.8.0_252, vendor: Azul Systems, Inc., runtime: /usr/lib/jvm/zulu-8-amd64/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "4.19.76-linuxkit", arch: "amd64", family: "unix"
Any suggestions?
Of course, I didn't get the same when I run the whole test suite through mvn clean install
This is very interesting class loader problem, so I have investigated it more deeply and created repo to reproduce https://github.com/bedla/maven-assertj-generator-test-error
There are two workarounds described.
First to add JUnit4 to plugin dependencies:
<plugin>
<groupId>org.assertj</groupId>
<artifactId>assertj-assertions-generator-maven-plugin</artifactId>
<version>2.2.0</version>
<executions>
<execution>
<goals>
<goal>generate-assertions</goal>
</goals>
</execution>
</executions>
<configuration>
<generateJUnitSoftAssertions>true</generateJUnitSoftAssertions>
<packages>
<param>cz.bedla.dto</param>
</packages>
</configuration>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</plugin>
And second to disable JUnit soft assertion generation:
<plugin>
<groupId>org.assertj</groupId>
<artifactId>assertj-assertions-generator-maven-plugin</artifactId>
<version>2.2.0</version>
<executions>
<execution>
<goals>
<goal>generate-assertions</goal>
</goals>
</execution>
</executions>
<configuration>
<generateJUnitSoftAssertions>false</generateJUnitSoftAssertions>
<packages>
<param>cz.bedla.dto</param>
</packages>
</configuration>
</plugin>
I am facing this issue when migrating my application from JDK8 to JDK11.
Any idea?