使用netbeans 6.9.1调试maven测试?

时间:2011-11-30 12:11:20

标签: java netbeans maven-2 junit surefire

我在netbeans 6.9.1中有一个maven项目,那里有一个junit 4.4测试类。

在netbeans上下文菜单中,我可以“清理并构建”我的项目,在输出中我可以看到,我的测试类是通过surefire找到并运行的。

现在我从上下文菜单“debug test file”中选择,在输出中它就像

--- maven-compiler-plugin:2.3.2:testCompile(default-testCompile)@<项目名称> --- 将2个源文件编译为<项目路径> \目标\测试类

--- maven-surefire-plugin:2.7.2:test(default-cli)@<项目名称> --- Surefire报告目录:<项目路径> \目标\万无一失的报告


T E S T S


没有可以运行的测试。

到目前为止我检查了什么:

  • 构建项目查找测试文件,但仍然是< testSourceDirectory>是否正确

  • 只有一个junit - 4.4 in * .pom依赖

  • 类文件本身看起来像

    import junit.framework.TestCase;

    import org.junit.Test;

    公共类SomeTest扩展了TestCase {     @测试     public void testFoo()抛出异常{/ --- /} }

  • 调试的netbeans操作说明如

    执行目标:test-compile surefire:test

    设置属性: jpda.listen =真 maven.surefire.debug = -Xdebug -Xrunjdwp:transport = dt_socket,server = n,address = $ {jpda.address} jpda.stopclass = $ {} packageClassName failIfNoTests = false //这是我的补充,没有失败 forkMode =一次 测试= $ {的className}

  • 项目* .pom文件中没有任何surefire插件部分

1 个答案:

答案 0 :(得分:3)

这不是一个netbeans问题。

您已经定义了JUnit 3测试,但是您尝试使用JUnit 4运行器来运行它们。 Surefire使用以下规则来确定要使用的跑步者(来自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测试。删除扩展的TestCase,在测试注释之后添加@ Test / @ Before / @,并完全删除JUnit 3的东西。

有关执行迁移的详细信息,请参阅Best way to automagically migrate tests from JUnit 3 to JUnit 4?