![](/img/trans.png)
[英]DateFormat works in native JUnit test, but not executed by Gradle
[英]Remote debug a JUnit test executed using Gradle
我有以下情況:
機器 A:使用 Gradle 執行 JUnit 測試:
./gradlew :<directory> --tests <ClassName> --info
機器 B:我有一個 IDE(如 IntelliJ)。 我想為機器A創建一個遠程Java調試配置並調試測試。
我遇到了用於遠程調試的 gradlew 的“ --debug-jvm ”選項。 使用此參數,Gradle 測試運行器默認在端口 5005 上暫停。 我只能從同一台機器(機器 A)連接到此進程,但不能從機器 B 連接。
我按照https://www.thomaskeller.biz/blog/2020/11/17/debugging-with-gradle/中提到的步驟進行操作,但即使使用此配置,我也無法從機器 B 進行調試。我總是得到“連接來自機器 B 中的 IDE 的錯誤。
使用 Gradle 的 --info 選項,我可以看到添加到 JVM 的以下參數開始運行測試:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
對於遠程調試,我認為地址應該在端口號之前有“*:”。 例如:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005
但是“--debug-jvm”沒有在參數中添加“*:”。
還嘗試了以下事情:
將“debugOptions”添加到 Gradle 的“測試”任務中:
debugOptions { 啟用 = true 端口 = 8166 服務器 = true 掛起 = true }
結果是一樣的。 無法從機器 B 連接並導致 IDE 中出現“連接被拒絕”錯誤。
org.gradle.daemon=false
org.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:10999
Gradle 的守護線程被上述屬性掛起,但不是測試執行線程。
Gradle 版本: 5.6.2
Java 版本: JDK 11
如果一切(運行測試和 IDE)都在一台機器上,那么一切正常。
所以問題是,如何真正“遠程”調試使用 Gradle 執行的 JUnit 測試?
謝謝你的幫助!
--debug-jvm 選項僅用於允許本地調試。 一種解決方法是在測試任務上使用 jvmArgs 為其提供所需的精確調試 arguments。 這對我有用。
示例:
jvmArgs '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:30069'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.