2013-06-27 46 views
0

當我按照通過的IntelliJ IDEA此鏈接調試行家測試斷開:http://www.grygoriy.com/2012/01/how-to-debug-tests-maven-test-via.html的IntelliJ-想法調試調試行家測試

當到達第三步,並開始調試,它的連接,但很快斷開連接,在不停止斷點。我在的IntelliJ:

連接到目標VM,地址: '本地主機:5005',運輸: '插座'

從目標VM斷開,地址: '本地主機:5005',運輸:「插座'

任何想法?

+0

您的測試是否成功啓動?如果它沒有達到任何斷點,那可能是因爲你的代碼沒有運行。 –

+0

@Guillaume Darmont我用「mvn test -Dmaven.surefire.debug」運行代碼,當到達測試時,我在命令行中輸入: -------------------- ----------------------------------- 測試 ------------ ------------------------------------------- 在地址收聽運輸dt_socket :5005 因此,我開始與我的想法調試,它很快斷開連接和命令行仍然在「偵聽傳輸dt_socket在地址:5005」 –

+0

我有同樣的問題。你有沒有設法解決它? –

回答

0

阻止Idea調試Maven的目標的唯一方法是forking

插件,例如萬無一失彈簧引導使用分叉默認

因此,當您從IDEA開始調試maven目標時,它會連接到maven,但是您真正想要調試的進程與maven進程不同,所以它不會連接。

爲了防止在保命插件這樣的行爲,你應該看看這篇文章:如果您使用舊的萬無一失

<configuration> 
    <forkMode>never</forkMode> 
</configuration> 

在新神火:

<configuration> 
    <forkCount>0</forkCount> 
</configuration> 
http://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html

總之

但它不是很清楚:

  1. 在CI的情況下(我希望你正在使用CI工具),你是不是有防止分叉,而它,如果你船的項目給別人的多慢
  2. - 他們不會很高興,如果某些模塊的行爲不以默認的方式

所以,如果你想請CI,IDEA,合作開發者和你自己,你應該提供更聰明的方式來讓你調試你的構建。

我的建議:

  1. 默認行爲是分叉因爲構建過程是很經常的事情,同時調試它 - 是例外

  2. 調試器的行爲是分離簡單易用的「開機「

我的變種:

<properties> 
    <test.forkCount>1</test.forkCount> 
</properties> 
<profiles> 
     <profile> 
      <id>debug</id> 
      <properties> 
        <test.forkCount>0</test.forkCount>  
      </properties> 
     </profile> 
</profiles> 
<build> 
     <plugins> 
      <plugin> 
       <!-- surefire --> 
       <configuration> 
        <forkCount>${test.forkCount}</forkCount> 
       </configuration> 
      </plugin> 
     </plugins> 
</build> 

所以,在知道你只是需要建立與目標測試命名的運行配置,包括調試到文件列表中。

但在其他情況下,maven的行爲仍然默認。

附加利潤在哪裏 - 您可以在單個配置文件中封裝整個調試行爲。

舉例來說,在我的實際項目調試簡介:

  1. 開關等關分叉春啓動:運行
  2. 關掉JaCoCo覆蓋率(它需要萬無一失的分叉)
  3. 保持當地建築多克圖片但阻止推送到註冊表
  4. 保持完整的打包過程,但防止發佈到連接
  5. 將SOAP UI功能測試重定向到specital URL進行本地調試
  6. 重定向到DBCONFIG泊塢窗爲主的Postgres是「永遠空」
  7. 下調日誌級別爲log4j的爲DEBUG

所以,如果我用mvn <any> -P debug我敢肯定,我的環境和過程真的調試

但是,如果我在CI上運行mvn deploy - 我將獲得完整的堆棧構建過程。