我在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插件部分
答案 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?