当前位置: 首页 > article >正文

Maven项目JUnit测试的远程调试技巧

在日常的Java开发中,JUnit测试是确保代码质量的重要手段。虽然大多数集成开发环境(IDE)都提供了运行和调试JUnit测试的功能,但在某些情况下,我们可能需要从命令行运行应用程序,这时就需要使用Maven命令来运行测试。本文将通过一个简单的实例,介绍如何在命令行中以调试模式运行JUnit测试,并通过IDE进行远程调试。
创建一个简单的Maven项目
首先,我们创建一个简单的Maven项目,并添加一个JUnit测试类。项目结构如下:
复制
D:\LogicBig\example-projects\maven\maven-debug-test
├── pom.xml
├── src
├── main
│ └── java
│ └── com
│ └── logicbig
│ └── example
│ └── TestClass.java
└── test
└── java
└── com
└── logicbig
└── example
└── TestClassTest.java
pom.xml
xml复制

4.0.0
com.logicbig.example
maven-debug-test
1.0-SNAPSHOT


junit
junit
4.12
test



TestClass.java
java复制
package com.logicbig.example;

public class TestClass {
public String getString() {
return “a test string”;
}
}
TestClassTest.java
java复制
package com.logicbig.example;

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class TestClassTest {
@Test
public void testGetString() {
TestClass testClass = new TestClass();
String str = testClass.getString();
System.out.println(str);
assertEquals(“a test string”, str);
}
}
从命令行运行测试
在项目根目录下,使用以下命令运行测试:
bash复制
D:\LogicBig\example-projects\maven\maven-debug-test>mvn -Dmaven.surefire.debug test
输出如下:
复制
[INFO] Scanning for projects…
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building maven-debug-test 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] — maven-resources-plugin:2.6:resources (default-resources) @ maven-debug-test —
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] — maven-compiler-plugin:3.5.1:compile (default-compile) @ maven-debug-test —
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] — maven-resources-plugin:2.6:testResources (default-testResources) @ maven-debug-test —
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\LogicBig\example-projects\maven\maven-debug-test\src\test\resources
[INFO]
[INFO] — maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ maven-debug-test —
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] — maven-surefire-plugin:2.12.4:test (default-test) @ maven-debug-test —
[INFO] Surefire report directory: D:\LogicBig\example-projects\maven\maven-debug-test\target\surefire-reports

T E S T S

Listening for transport dt_socket at address: 5005
最后一行表明Maven已经自动暂停,并等待远程调试器在端口5005上连接。
设置IDE进行远程调试
接下来,我们需要在IDE中设置远程调试器。以IntelliJ IDEA为例,步骤如下:
打开项目,选择Run -> Edit Configurations…。
点击+号,选择Remote。
在Name中输入调试配置的名称,例如Remote Debug。
在Host中输入localhost,在Port中输入5005。
点击OK保存配置。
点击Debug按钮启动远程调试器。
此时,IDE将连接到Maven启动的调试会话,你可以在IDE中设置断点、查看变量值等,进行正常的调试操作。
更改调试端口
如果需要更改调试端口,可以使用以下命令:
bash复制
mvn -Dmaven.surefire.debug=“-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE” test
将端口更改为8000后,只需在IDE中将远程调试配置的端口更改为8000即可。
总结
通过上述步骤,我们可以在命令行中以调试模式运行JUnit测试,并通过IDE进行远程调试。这种方法在某些情况下非常有用,例如在CI/CD环境中,或者当IDE无法直接运行测试时。希望本文对你有所帮助!


http://www.kler.cn/a/524535.html

相关文章:

  • 《一文读懂!Q-learning状态-动作值函数的直观理解》
  • [权限提升] 常见提权的环境介绍
  • 计算机网络 IP 网络层 2 (重置版)
  • 21.2-工程中添加FreeRTOS(掌握) 用STM32CubeMX添加FreeRTOS
  • Autogen_core 测试代码:test_cache_store.py
  • Spring事务和事务传播机制
  • 深度学习中常用的评价指标方法
  • 剑指 Offer II 002. 二进制加法
  • 探索高效图像识别:基于OpenCV的形状匹配利器
  • git中有关old mode 100644、new mode 10075的问题解决小结
  • EtherCAT主站IGH-- 19 -- IGH之fsm_pdo.h/c文件解析
  • DeepSeek R1有什么不同
  • H264原始码流格式分析
  • 探索AI(chatgpt、文心一言、kimi等)提示词的奥秘
  • 【2024年华为OD机试】(C卷,200分)- 最长子字符串的长度(二) (JavaScriptJava PythonC/C++)
  • 自由窗口边框阴影描绘方案汇总-社群讨论学习
  • AUTOSAR从入门到精通-高级驾驶辅助系统(ADAS)
  • 数据结构的队列
  • Helm Chart 实战指南
  • 菜鸟之路Day05一一正则表达式
  • js笔记(黑马程序员)
  • DeepSeek模型:开启人工智能的新篇章
  • Spring Boot - 数据库集成05 - 集成MongoDB
  • Vue+Echarts 实现青岛自定义样式地图
  • 无用知识研究:对std::common_type以及问号表达式类型的理解
  • 论文阅读笔记:MambaOut: Do We Really Need Mamba for Vision?