从Eclipse中的Maven项目调试Junit测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Eclipse中的Maven项目调试Junit测试相关的知识,希望对你有一定的参考价值。
我有一个由几个Maven项目组成的项目,其中测试是分开的模块。例如:
com.xyz.abc.feature.model
com.xyz.abc.feature.model.test
测试是JUnit测试,我一直在使用mvn install
从命令行运行它们。我想在特定测试中逐步执行代码,因此我将项目作为Maven项目导入Eclipse。我尝试在单元测试中设置断点,Eclipse在执行mvn install
目标时不会停止它。
在这种情况下如何调试特定测试?
这里有两种主要方法。
首先,您可以从Eclipse执行测试并调试它,就像调试任何其他Java程序一样。这可能是最简单的方法,但如果Maven执行与Eclipse中的执行之间存在差异(例如,环境变量,测试顺序等),则可能不够准确。
第二种方法是运行mvnDebug
而不是mvn
这是必要的mvn
,远程调试端口打开。您可以启动构建,将Eclipse连接到远程调试端口并从那里进行调试。
Maven SureFire插件默认在不同的进程中运行测试。这可能就是为什么它不适合你。您将首先通过将此添加到您的pom.xml来禁用分叉:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>never</forkMode>
</configuration>
</plugin>
</plugins>
</build>
然后按照以下步骤进行调试:
- 使用调试模式启动测试:
转到pom.xml所在的文件夹。假设您要调试到“安装”阶段,这也涵盖了您的测试。运行此命令
mvnDebug install
这将启动一个进程并等待默认端口8000(您的端口可能不同,请检查输出显示)。我的测试显示了这个输出:
Listening for transport dt_socket at address: 8000
- 使用Eclipse中的远程调试器连接到步骤1中启动的进程:
如果没有,请在Eclipse中设置(或导入)项目,然后转到菜单“运行” - >“调试配置” - >“远程Java应用程序”,并创建新的启动配置。确保端口号与步骤1的输出中显示的端口号匹配。单击“调试”。这将把Eclipse调试器连接到在步骤1中启动的进程。如果在Eclipse源代码编辑器中设置了断点,那么它将在那里停止。
有些人会说,通过这样做,你真的是调试Maven。我测试了它,这种方法工作得很好。只要您的Eclipse项目中没有Maven源代码,并且它停在您自己的项目源代码中设置的断点处,这就行得很好!
只需在eclipse中打开测试,双击测试名称即可选择它(实际上只需单击测试名称即可将光标放入其中,或者您可以在大纲视图中选择它),然后右键点击并选择Debug As
> JUnit Test
以上是关于从Eclipse中的Maven项目调试Junit测试的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse 2018-09与jdk11声称包org.junit缺失,即使它包含在maven中
Eclipse开发Maven项目提示:程序包org.junit不存在解决方案
Eclipse/Maven:运行 JUnit 测试时未编译它们