我想在使用Netbeans的Maven項目中的遠程機器上自動啓動和調試單元測試。所有的IDE功能都應該可以工作,例如調試,輸出窗口等。只需點擊一下「Debug Focused Test Method」,程序就必須完全自動化。遠程調試Netbeans/Maven中的單元測試
回答
解決方法是用一個自定義腳本替換mvn
命令,該腳本將執行rsync
和ssh
。通過這兩種工具的神奇,它的作品真的很好。另外,它應該可以移植到其他Maven IDE。目前的指南是針對bash
,但是可以在Windows中使用powershell
,groovy
或甚至cmd
來實現相同的想法。 (我試圖用犀牛,但方式執行其他命令,同時妥善保存所有的參數似乎打破。)
- 在NetBeans目錄
/usr/local/netbeans-8.1/java/maven/bin/
,重命名mvn
腳本:cd /usr/local/netbeans-8.1/java/maven/bin/
sudo mv mvn mvn.orig
創建新的
mvn
腳本。#!/bin/bash if [ -z "$REMOTE" ] ; then SCRIPTDIR=$(dirname "$0") "$SCRIPTDIR/mvn.orig" "[email protected]" else if [ -z "$REMOTE_BASE_DIR" ] ; then echo "ERROR: Please set environment variable REMOTE_BASE_DIR to the folder which contains the project directory" exit fi PROJECT_DIR=$(basename "$(pwd)") REMOTE_PROJECT_DIR=$REMOTE_BASE_DIR/$PROJECT_DIR/ ARGS= for var in "[email protected]" do ARGS="$ARGS \\\"$var\\\"" done echo "Syncing project directory..." (set -x; rsync -aczhW --progress --delete --exclude '.git' --exclude 'target' $RSYNC_OPTS ./ "$REMOTE:\"$REMOTE_PROJECT_DIR\"") echo "Executing maven..." if [ "$REMOTE_PORT" = '${jpda.address}' ] ; then (set -x; ssh ${REMOTE} "cd \"$REMOTE_PROJECT_DIR\"; mvn $ARGS") else (set -x; ssh -R $REMOTE_PORT:localhost:$REMOTE_PORT ${REMOTE} "cd \"$REMOTE_PROJECT_DIR\"; mvn $ARGS") fi fi
- 配置遠程機器:
- 要麼安裝
mvn
,或安裝NetBeans,並把它mvn
的道路上。我選擇了後面的,但兩者都應該沒問題。 - 配置ssh。我不會在這裏描述如何去做。確保
AllowTcpForwarding
設置爲yes
或remote
/etc/ssh/sshd_config
。
- 要麼安裝
創建新的NetBeans配置,將所有行家的行動(包括清潔&版本)轉發到遠程機器:
- 走進項目的屬性
- 創建新的配置
在「設置屬性「add:
Env.REMOTE_BASE_DIR=<directory on the server that will contain your project directory> Env.REMOTE=<address of remote machine> Env.REMOTE_PORT=${jpda.address} Env.RSYNC_OPTS=<optional, but could be another --exclude>
要使用,請在工具欄的下拉菜單中選擇新配置,然後照常調用任何maven目標。
- 我仍在尋找一種方法來設置全局配置。如果你知道如何做到這一點,請告訴我!
- 或者,創建一個具有相同屬性集的自定義操作。
- 由於JVM中內置的遠程調試功能以及Maven的版本/依賴關係跟蹤和Netbeans中出色的Maven集成,我應該提到調試體驗工作得很好。我真的很喜歡你能夠輕鬆地進入其他項目的代碼(並且它可以解析特定的版本)。
任何人都知道爲什麼我的屏幕截圖不顯示? –
當我需要在IntelliJ IDEA中調試集成測試時,我曾多次使用過這個功能,並且我需要Maven執行所有預集成測試步驟。 –
問題是如何使過程自動化。 –
在IntelliJ IDEA中,可以通過運行配置來首先執行某個其他運行配置。如果NetBeans支持類似的功能,您可以在需要的地方添加斷點,然後運行config:1)使用-Dmaven.surefire.debug運行Maven構建; 2)連接遠程調試器。 你在談論什麼樣的自動化?右鍵單擊某個測試並僅運行該測試? –
- 1. C++遠程單元測試
- 2. 遠程認證的單元測試
- 3. 調試單元測試
- 4. 調試UWP單元測試
- 5. 單元測試中的單步測試和調試代碼
- 6. Maven:遠程運行單元測試
- 7. Eclipse與遠程單元測試
- 8. 單元測試遠程測試代理在TFS構建
- 9. 如何遠程調試測試?
- 10. 單元測試Django與遠程調用另一臺服務器
- 11. 簡單測試並在遠程主機上調試drupal
- 12. 單元測試Activity.startService()調用?
- 13. 單元測試JNI調用
- 14. 單元測試Symfony回調
- 15. 單元測試中的性能測試
- 16. 遠程調試
- 17. 遠程調試
- 18. 遠程調試
- 19. UnitTestIsolationException:調試單元測試在ShimsContext.Create
- 20. 調試單元測試上使用Eclipse
- 21. 獲取單元測試調試
- 22. Grunt + karma + angular - 調試單元測試
- 23. Visual Studio單元測試調試
- 24. 無法調試單元測試
- 25. 如何調試Django單元測試?
- 26. ASP MVC 2單元測試調試
- 27. visual studio調試單元測試集成
- 28. 調試反應單元測試(Karma/Jasmine)
- 29. 單元測試測試
- 30. CakePHP測試 - 單元測試
爲什麼在遠程機器上?單元測試可以在IDE中運行,當然也可以調試? – khmarbaise
@khmarbaise可能有一百萬個原因。對我而言,這是因爲我使用JUnit的「測試」來執行實際工作(幾乎像ipython筆記本),並且我希望它們能夠在我的大盒子上運行。 –