[解决方案] 在Eclipse中调试maven项目中的Junit测试用例

文章目录

    • 前言
    • 1 问题场景 (嫌长亦可直接跳到第2节)
    • 2 解决方案
    • 3 总结
    • 参考文献

前言

一般来说,在Eclipse中调试Junit测试只需要右键文件,然后选择debug as -> Junit Test就行了。但是,我这次碰到的Junit测试无法使用该方法,故在此记录解决方案。

解决方案的关键:使用mvn指令进入调试模式

1 问题场景 (嫌长亦可直接跳到第2节)

这个项目是一个专门的test suite项目,里面只存了test文件(专门用来做测试的)。其测试使用的maven依赖是:

		
            org.junit.jupiter
            junit-jupiter-engine
        
        
            org.hamcrest
            hamcrest-library
        

如下图,我无论是右键这个测试文件,还是右键其中的Junit测试方法,在debug as中都没有Junit Test的选项。
[解决方案] 在Eclipse中调试maven项目中的Junit测试用例_第1张图片

[解决方案] 在Eclipse中调试maven项目中的Junit测试用例_第2张图片

我惊了。然后还试了很多其他方法,比如右键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了。

[解决方案] 在Eclipse中调试maven项目中的Junit测试用例_第3张图片

debug的界面如下图:

[解决方案] 在Eclipse中调试maven项目中的Junit测试用例_第4张图片

3 总结

花了一下午的时间,先是fork了一下这个项目,然后配置了一下gitee,然后clone这个项目到本地,切换到指定版本,编译这个项目,在Eclipse中导入这个项目,一开始导入的时候还老有错误。调了一会儿之后(主要是要configure build path)才解决。

然后到调试的时候懵了,卡了很久。都没办法在Eclipse中调试。

最后我注意到:
既然用mvn test可以运行测试,那么我在搜索参考文献的时候应该用这样的关键词:java maven test debug,然后就找到了适合我这个问题场景的参考方案。

总言之,自己还是要多学习,软工里面要学的东西不少,自己所学只是沧海一粟中的沧海一粟

参考文献

  • How to Debug a Test Run with Maven

你可能感兴趣的:(PHD,Cand1-2)