Ошибка при выполнении тестов в java maven jacoco: не удалось выполнить цель org. apache .maven.plugins: maven-surefire-plugin: 2.12.4: test - PullRequest
2 голосов
/ 10 апреля 2020

Ошибка при выполнении тестов в java maven jacoco: Не удалось выполнить цель org. apache .maven.plugins: maven-surefire-plugin: 2.12.4: test

Good Morning. Я выполняю проект Maven и использую NetBeans для написания Java кода. Когда я пытаюсь запустить тестовый файл, я получаю эту ошибку:

cd C:\Users\ruimi\Documents\NetBeansProjects\erro_testes_unitarios; "JAVA_HOME=C:\\Program Files\\Java\\jdk-14" cmd /c "\"C:\\Program Files\\netbeans 11.3 tenativa 1000\\NetBeans-11.3\\netbeans\\java\\maven\\bin\\mvn.cmd\" -Dtest=com.mycompany.erro_testes_unitarios.NewMainTest -Dmaven.ext.class.path=\"C:\\Program Files\\netbeans 11.3 tenativa 1000\\NetBeans-11.3\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 test-compile surefire:test"
Scanning for projects...

------------------------------------------------------------------------
Building erro_testes_unitarios 1.0-SNAPSHOT
------------------------------------------------------------------------

--- jacoco-maven-plugin:0.7.7.201606060606:prepare-agent (default) @ erro_testes_unitarios ---
argLine set to -javaagent:C:\\Users\\ruimi\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.7.7.201606060606\\org.jacoco.agent-0.7.7.201606060606-runtime.jar=destfile=C:\\Users\\ruimi\\Documents\\NetBeansProjects\\erro_testes_unitarios\\target\\jacoco.exec

--- maven-resources-plugin:2.6:resources (default-resources) @ erro_testes_unitarios ---
Using 'UTF-8' encoding to copy filtered resources.
skip non existing resourceDirectory C:\Users\ruimi\Documents\NetBeansProjects\erro_testes_unitarios\src\main\resources

--- maven-compiler-plugin:3.1:compile (default-compile) @ erro_testes_unitarios ---
Nothing to compile - all classes are up to date

--- maven-resources-plugin:2.6:testResources (default-testResources) @ erro_testes_unitarios ---
Using 'UTF-8' encoding to copy filtered resources.
skip non existing resourceDirectory C:\Users\ruimi\Documents\NetBeansProjects\erro_testes_unitarios\src\test\resources

--- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ erro_testes_unitarios ---
Nothing to compile - all classes are up to date

--- maven-surefire-plugin:2.12.4:test (default-cli) @ erro_testes_unitarios ---
Surefire report directory: C:\Users\ruimi\Documents\NetBeansProjects\erro_testes_unitarios\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:513)
    at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:525)
Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented.
    at org.jacoco.agent.rt.internal_6da5971.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:140)
    at org.jacoco.agent.rt.internal_6da5971.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:101)
    at org.jacoco.agent.rt.internal_6da5971.PreMain.createRuntime(PreMain.java:55)
    at org.jacoco.agent.rt.internal_6da5971.PreMain.premain(PreMain.java:47)
    ... 6 more
Caused by: java.lang.NoSuchFieldException: $jacocoAccess
    at java.base/java.lang.Class.getField(Class.java:2013)
    at org.jacoco.agent.rt.internal_6da5971.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:138)
    ... 9 more
*** java.lang.instrument ASSERTION FAILED ***: "result" with message agent load/premain call failed at JPLISAgent.c line: 422
FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------

Total time: 2.899 s
Finished at: 2020-04-10T13:14:06+01:00
Final Memory: 11M/47M

------------------------------------------------------------------------

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-cli) on project erro_testes_unitarios: Execution default-cli of goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ? -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

Вот мой pom. xml file:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>erro_testes_unitarios</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.5.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.5.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.5.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>14</maven.compiler.source>
        <maven.compiler.target>14</maven.compiler.target>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.jacoco</groupId> 
                <artifactId>jacoco-maven-plugin</artifactId> 
                <version>0.7.7.201606060606</version> 
                <executions>
                    <execution> 
                        <goals>
                            <goal>prepare-agent</goal> 
                        </goals>
                    </execution> 
                    <execution>
                        <id>report</id> 
                        <phase>prepare-package</phase> 
                        <goals>
                            <goal>report</goal> 
                        </goals>
                    </execution> 
                </executions>
            </plugin> 

        </plugins>
    </build>
</project>

Можете ли вы помочь мне с этим? Спасибо всем за вашу доступность!

1 Ответ

0 голосов
/ 11 апреля 2020

Очевидно, вы используете JDK 14 в качестве среды разработки и тестирования. Вы можете проверить это. Go до Help -> About -> Java. Интегрированный Maven и все плагины в Maven используют версию JDK, которую NetBeans использует в качестве среды exe c.

Jacoco добавил экспериментальную поддержку JDK 14 только в 0.8.5 версия :

  • JaCoCo теперь официально поддерживает Java 13
  • Экспериментальная поддержка для файлов классов Java 14 (GitHub # 897 ).
  • Ветви, добавленные компилятором Kotlin для открытых функций с аргументами по умолчанию, отфильтровываются при генерации отчета (GitHub # 887).

Вы можете изменить версия плагина до 0.8.5:

...
<groupId>org.jacoco</groupId> 
  <artifactId>jacoco-maven-plugin</artifactId> 
<version>0.8.5</version>
... 

Версия 0.7.7 поддерживает JDK 8 или более ранние версии. Итак, если вы хотите использовать версию плагина 0.7.7, вы можете использовать JDK 8. Для настройки версии JDK для NetBeans см. вопрос . Также с JDK 8 вы должны изменить maven.compiler.source и maven.compiler.target на 1.8

...