eclipse中Maven构建项目时Junit测试遇到 无法创建测试Could not create test 'xxx' 与 @Test不可用的问题
一、junit.framework.AssertionFailedError: Could not create test ‘xxx’ ,junit无法创建测试
错误信息如下:
junit.framework.AssertionFailedError: Could not create test 'xxx'
at junit.framework.Assert.fail(Assert.java:57)
at junit.framework.TestCase.fail(TestCase.java:227)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader$1.runTest(JUnit3TestLoader.java:177)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:131)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
原因猜想: 可能是由于运行配置或调试配置中的Test runner配置与所导入的JUnit包不匹配所造成的。
解决方法: 选中要运行的测试类 -> 右键单击 -> 选择与JUnit版本匹配的Test Runner。如下图所示:如果是JUnit3就在右边的框中选择JUnit3,若是Junit4,则选择JUnit4。
二、maven工程引入了junit包,但是@Test仍不可用
- 原因一: 默认的junit包是3.8.1,有时不能使用@Test注解,换成了别的版本比如4.9,就可以使用了,但具体原因不明。
- 原因二: 上述scope配置了Junit可用的位置,test表示只能在src下的test文件夹下面才可以使用。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
compile:缺省值,适用于所有阶段,会随着项目一起发布。
provided:类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
runtime:运行时使用,如JDBC驱动,适用运行和测试阶段。
test:测试时使用,用于编译和运行测试代码。不会随项目发布。
system:类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
依赖范围控制哪些依赖在哪些classpath 中可用,哪些依赖包含在一个应用中
参考文章:
1.maven中scope属性-https://www.cnblogs.com/hzzll/p/6738955.html