![](/img/trans.png)
[英]error package org.python.util does not exist, compilation with ant
[英]COMPILATION ERROR : package my.package.root.util does not exist
我有一個 Eclipse Java 項目,我正在嘗試使用 Maven 對其執行單元測試。
我有如下的單元測試,以便它尊重預期的層次結構
src/test/java/StringUtilsTests.java
但是,我的單元測試引用了位於以下位置的源代碼:
src/my/package/root/util/StringUtils.java
只是因為它一直都是這樣,我不想為測試更改我的文件夾層次結構。
因此,我使用 build-helper-maven-plugin 來添加這個源文件夾,如下
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/my/package/root/util</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
但即便如此,我還是收到以下錯誤:
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Users/frederic/git/myproject/src/test/java/StringUtilsTests.java:[22,32] package package my.package.root.util does not exist
下面是我對 maven-surefire-plugin 的引用
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<skipTests>false</skipTests>
</configuration>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
如果我不進行測試,情況會更糟
src/test/java/StringUtilsTests.java
但在這里例如:
src/tests/my/package/root/util/StringUtilsTests.java
maven-surefire-plugin 將顯示
No tests to run
您需要將它們作為單元測試運行還是可以將它們作為集成測試運行? 我認為集成測試會像這樣開箱即用嗎? 只需將 class 名稱更改為以IT MyClassIT.java
結尾即可進行這些測試,或者微調 your.pom 並將目標更改為集成測試階段或驗證階段? 我認為這應該可行,因為它將在構建周期的后期執行。
否則嘗試使用通配符更改此行: <source>src/my/package/root/util/*</source>
根據這篇文章,將以下元素添加到我的pom.xml
解決了我的問題:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<executions>
<execution>
<id>compiletests</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<testSourceDirectory>${project.basedir}/src-test</testSourceDirectory>
非常重要的是添加這個依賴
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.