【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:\workspace\support\src\test\java\com\test\spring\support\TestSpringContextHolder.java:[7,16] 错误: 程序包org.junit不存在
[ERROR] E:\workspace\support\src\test\java\com\test\spring\support\TestSpringContextHolder.java:[16,2] 错误: 找不到符号
[ERROR] 符号:   类 Test
[ERROR] 位置: 类 TestSpringContextHolder
[ERROR] E:\workspace\support\src\test\java\com\test\spring\support\TestSpringContextHolder.java:[29,2] 错误: 找不到符号
[ERROR] 符号:   类 Before
[ERROR] 位置: 类 TestSpringContextHolder
[ERROR] E:\workspace\support\src\test\java\com\test\spring\support\TestSpringContextHolder.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\test\java\。。。,不是。。。\src\main\java\。。。,处理方式如上,如果异常发生在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>
         
         

          解决思路参考:http://www.cnblogs.com/LiuChunfu/p/5598367.html

          本文转自https://blog.csdn.net/javaloveiphone/article/details/52163396 重点在于第四点。
          • 1
            点赞
          • 3
            收藏
            觉得还不错? 一键收藏
          • 0
            评论
          评论
          添加红包

          请填写红包祝福语或标题

          红包个数最小为10个

          红包金额最低5元

          当前余额3.43前往充值 >
          需支付:10.00
          成就一亿技术人!
          领取后你会自动成为博主和红包主的粉丝 规则
          hope_wisdom
          发出的红包
          实付
          使用余额支付
          点击重新获取
          扫码支付
          钱包余额 0

          抵扣说明:

          1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
          2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

          余额充值