簡體   English   中英

使用-Dmaven.surefire.debug和-DforkMode = never運行Maven測試

[英]Run Maven tests with -Dmaven.surefire.debug and -DforkMode=never

我正在使用Maven和Surefire插件v.2.11開發一個項目。 要運行單個測試,我使用-Dtest=TestClass#testMethod-DforkMode=never (沒有DforkMode=never沒有因為對象堆空間不足而無法運行測試)。 我已經習慣了,它對我很好。 所以我在跑:

mvn -Dtest=TestClass#testMethod test -DforkMode=never

並且測試運行正常。

但是當我跑步的時候

mvn -Dtest=TestClass#testMethod -Dmaven.surefire.debug test -DforkMode=never

它只是跳過調試“等待”部分並且正在執行測試(我無法使用IDE連接)。 mvn -Dmaven.surefire.debug test對我很好用於其他項目(我不需要關心fork模式)。

任何想法為什么forkMode=never-Dmaven.surefire.debug的組合不能按預期工作?

屬性maven.surefire.debug正在設置debugForkedProcess插件的debugForkedProcess參數。

該參數的文檔內容如下:

將調試器附加到分叉的 JVM。 如果設置為“true”,則進程將掛起並等待調試器在端口5005上附加。如果設置為其他字符串,則該字符串將附加到argLine,允許您配置任意可調試性選項(不覆蓋其他選項)通過argLine參數指定的選項)。

因此它只會調試分叉的JVM,這解釋了為什么它在測試沒有分叉時不起作用。 它無法設置已運行的非分叉JVM進程的調試。

使用mvnDebug

你可以做的是使用mvnDebug ,它允許你調試maven進程本身 - 並且你的測試也沒有被分叉。

即代替mvn -Dtest=TestClass#testMethod test -DforkMode=never不會執行mvnDebug -Dtest=TestClass#testMethod test -DforkMode=never 默認情況下,它會在啟動maven時偵聽端口8000。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM