2011-11-30 61 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

您能否将此答案标记为接受,然后请? –