2011-11-30 101 views
4

我在NetBeans 6.9.1中有一個maven項目,在那裏有一個junit 4.4測試類。用netbeans 6.9.1調試maven測試?

在NetBeans上下文菜單中,我可以「清理並構建」我的項目,並在輸出中可以看到,我的測試類被surefire發現並運行。

現在我從上下文菜單中選擇「調試測試文件」選擇,在其輸出是這樣

--- Maven的編譯器插件:2.3.2:testCompile(默認testCompile)@ <項目名稱> --- 2個編譯源文件<項目路徑> \目標\測試類

--- Maven的萬無一失,插件:2.7.2:測試(默認CLI)@ <項目名稱> - - Surefire report directory:< project-path> \ target \ surefire-reports


T E式T小號


沒有運行的測試。

我到目前爲止已經檢查: - 4.4 *

  • 構建項目認定測試文件,但仍然< testSourceDirectory>是存在的,正確的

  • 只有一個JUnit的。 POM依賴

  • 類文件本身看起來像

    進口菊nit.framework.TestCase;

    import org.junit.Test;

    公共類SomeTest延伸測試用例 { @Test 公共無效命名爲testFoo()拋出異常{/ --- /}}

  • netbeans的調試動作描述看起來像

    執行goal:test-compile surefire:test

    set properties: jpda.listen = true maven.surefire.d ebug = -Xdebug -Xrunjdwp:transport = dt_socket,server = n,address = $ {jpda.address} jpda.stopclass = $ {packageClassName} failIfNoTests = false //這是我的補充,沒有失敗 forkMode =一旦 測試= $ {}的className

  • 沒有萬無一失的插件部分項目的任何地方* .pom文件

回答

3

這是不是一個真正的問題的NetBeans。

您已經定義了JUnit 3測試,但是您正嘗試使用JUnit 4 runner來運行它們。神火使用以下規則來確定要使用的亞軍(從maven-surefire-plugin Junit

if the JUnit version in the project >= 4.7 and the parallel attribute has ANY value 
    use junit47 provider 
if JUnit >= 4.0 is present 
    use junit4 provider 
else 
    use junit3.8.1 

你必須在你的項目的JUnit 4.4,所以它的使用junit4。由於您只有2個測試類,所以最好的選擇是將您的測試重新定義爲JUnit 4測試。刪除extends TestCase,添加@ Test/@ Before/@ After註釋到你的測試中,並完全刪除JUnit 3的東西。

有關執行遷移的詳細信息,請參閱Best way to automagically migrate tests from JUnit 3 to JUnit 4?

+0

感謝您的回答和文章。最後,我決定重新安排一切正常的maven項目風格,刪除所有junit 3的東西,現在一切正常。 –

+0

您能否將此答案標記爲接受,然後請? –