1. 程式人生 > >Maven中junit打包問題

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下就可以了