[解決方案] 在Eclipse中調試maven項目中的Junit測試用例

前言

一般來說,在Eclipse中調試Junit測試只需要右鍵文件,然後選擇debug as -> Junit Test就行了。但是,我這次碰到的Junit測試無法使用該方法,故在此記錄解決方案。

解決方案的關鍵:使用mvn指令進入調試模式

1 問題場景 (嫌長亦可直接跳到第2節)

這個項目是一個專門的test suite項目,裏面只存了test文件(專門用來做測試的)。其測試使用的maven依賴是:

		<dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-library</artifactId>
        </dependency>

如下圖,我無論是右鍵這個測試文件,還是右鍵其中的Junit測試方法,在debug as中都沒有Junit Test的選項。
在這裏插入圖片描述

在這裏插入圖片描述

我驚了。然後還試了很多其他方法,比如右鍵src/test/java文件夾,運行debug as Application,但是沒有用,會顯示downloading JDK langtools,然後報錯zip failure。然後就是一系列比較坑的提示,差點還讓我下載了jdk9(實際上沒必要!)

2 解決方案

1)進入該項目pom.xml文件所在的目錄,在該目錄下打開terminal (我是Ubuntu系統,在windows下應該也差不多,shift+右鍵可以打開powershell);
2)輸入mvn -Dtest=JavaTokenTest -Dmaven.surefire.debug test
其中JavaTokenTest是你想測試的測試類(也可以替換成該項目下的其他測試類);

此時terminal顯示:

[INFO] 
[INFO] --- maven-surefire-plugin:3.0.0-M1:test (default-test) @ javaparser-core-testing ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Listening for transport dt_socket at address: 5005

注意這裏的Listening for transport dt_socket at address: 5005,5005端口後面會用到。
3)在Eclipse中找到該項目下的JavaTokenTest文件,設置斷點,然後上方菜單欄->debug configurations,會彈出如下窗口(如下圖),在左側找到Remote Java Application,在中間填5005端口,然後點擊Debug,Eclipse就會進入Debug mode,然後就可以順利debug了。

在這裏插入圖片描述

debug的界面如下圖:

在這裏插入圖片描述

3 總結

花了一下午的時間,先是fork了一下這個項目,然後配置了一下gitee,然後clone這個項目到本地,切換到指定版本,編譯這個項目,在Eclipse中導入這個項目,一開始導入的時候還老有錯誤。調了一會兒之後(主要是要configure build path)才解決。

然後到調試的時候懵了,卡了很久。都沒辦法在Eclipse中調試。

最後我注意到:
既然用mvn test可以運行測試,那麼我在搜索參考文獻的時候應該用這樣的關鍵詞:java maven test debug,然後就找到了適合我這個問題場景的參考方案。

總言之,自己還是要多學習,軟工裏面要學的東西不少,自己所學只是滄海一粟中的滄海一粟

參考文獻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章