Maven中junit打包問題
1.scope標籤的作用
<!-- 新增junit單元測試包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
[ERROR] /C:/Users/abc/Desktop/owowl/src/main/java/com/ys/redis/Demo.java:[6,17] 程式包org.junit不存在
[ERROR] /C:/Users/abc/Desktop/owowl/src/main/java/com/ys/redis/Demo.java:[7,17] 程式包org.junit不存在
[ERROR] /C:/Users/abc/Desktop/owowl/src/main/java/com/ys/redis/Demo.java:[15,10] 找不到符號
可以看到我已經在pom檔案中配置了相關的dependency,但是仍然會顯示錯誤。
這裡對於像我這樣的新手,我們應該先了解scope標籤配置的作用
scope可以配置5個值
* compile,預設值,適用於所有階段,會隨著專案一起釋出。
* provided,類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。
* runtime,只在執行時使用,如JDBC驅動,適用執行和測試階段。
* test,只在測試時使用,用於編譯和執行測試程式碼。不會隨專案釋出。
* system,類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查詢它。
所以可以看到我們配置的是test級別的,所以相關的jar包不會隨著專案釋出
這裡我們可以去掉test
test
2.打包時忽略單元測試
上面的方法雖然在控制檯的顯示中是沒有報錯的,但是,他卻將單元測試類和相關jar一同打包了,這和我們的初衷不符。
在網上搜索了一下 - - Maven 編譯打包時如何忽略測試用例的方法
在進行編譯、打包時,maven會執行src/test/java中的單元測試用例
跳過測試用例有如下方法
1.-DskipTests,不執行測試用例,但編譯測試用例類生成相應的class檔案至target/test-classes下。
2.-Dmaven.test. skip=true,不執行測試用例,也不編譯測試用例類。
3.無法建立src/test/java
按照上面方法進行編譯測試,但是依然沒有效果………..好吧,真粗心,測試用例要放於src/test/Java
目錄下,但是我建立資原始檔的時候顯示 src/test/Java is already exist
專案右鍵->buildPath configure Build Path->source 顯示
Build path entry is missing: 專案名/src/test/java
解決方法有如下
1.window>preferences->java->compiler->選擇本地要用的Java版本
2.window>preferences->java->installJars->修改為本地jdk 專案右鍵->buildPath
3.configure Build Path->點選選項卡Libraries->選中JRE System Library->
4.點選edit->選中Alternate JRE->選擇jdk
之後,專案會自動建立src/test/java
我們將測試用例類移動到src/test/java下就可以了