[英]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.