Eclipse开发Maven项目提示:程序包org.junit不存在解决方案

1、产生的问题:

maven项目执行单元测试可以正常执行,但是执行maven命令test,则报一下异常:

org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project support: Compilation failure: Compilation failure:
[ERROR] E:workspacesupportsrc	estjavacom	estspringsupportTestSpringContextHolder.java:[7,16] 错误: 程序包org.junit不存在
[ERROR] E:workspacesupportsrc	estjavacom	estspringsupportTestSpringContextHolder.java:[16,2] 错误: 找不到符号
[ERROR] 符号:   类 Test
[ERROR] 位置: 类 TestSpringContextHolder
[ERROR] E:workspacesupportsrc	estjavacom	estspringsupportTestSpringContextHolder.java:[29,2] 错误: 找不到符号
[ERROR] 符号:   类 Before
[ERROR] 位置: 类 TestSpringContextHolder
[ERROR] E:workspacesupportsrc	estjavacom	estspringsupportTestSpringContextHolder.java:[43,5] 错误: 找不到符号

  

2、产生上述错误的原因:

1)、maven项目,单元测试和运行使用不同的classpath,测试使用test-classpath,运行使用classpath;
2)、创建maven项目使用junit默认的版本为3.8.1,它使用的是编程的方式,即使maven dependencies目录引入了junit,但也无法使用,只能通过build path添加junit支持

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

 

3、解决方案:

将junit的版本提高到4.x,配置代码如下:

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <!-- 默认的版本为3.8.1,修改为4.x,因为3.x使用的为编程的方式,4.x为注解的形式。 -->
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

4、补充:我上面贴出的异常目录位于。。。src estjava。。。,不是。。。srcmainjava。。。,处理方式如上,如果异常发生在main目录而不是test目录,同时junit版本是4.x,解决方案则将scope属性去掉:

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <!-- 默认的版本为3.8.1,修改为4.x,因为3.x使用的为编程的方式,4.x为注解的形式。 -->
            <version>4.11</version>
            <!-- 去掉scope作用域,使用默认的compile,编译、测试、运行都有效的作用域 -->
            <!--<scope>test</scope>-->
        </dependency>

解决思路参考:https://blog.csdn.net/javaloveiphone/article/details/52163396

原文地址:https://www.cnblogs.com/mjbrian/p/9772506.html