测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法…

测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法…

今天遇见了一个奇怪的问题,在IDE中run unit test,全部cases都成功了,但是后来通过mvn test运行case确保错了。在寻求原因的同时也找到了对应的解决方法。

Run Unit Test和Maven test的区别

差异1:在IDE中通过选中单元测试路径,点击右键选择run test和点击maven中的test是有区别的。在Maven执行测试的过程中,是不允许测试cases访问其他项目的测试类和其他项目的resources下文件的。也就是说,在a/src/test/java下的测试用例,是不能引用b/src/test/java中的类的,同时也不允许访问b/src/test/resources下的资源的。但是在IDE中的Run Unit Test几乎是没有这样的限制的。

差异2:Maven强制要求src/test/java下不能存在resource的文件,必须放到src/test/reources文件夹下,但是IDE却很少有对应的约束。

这些约束就是导致IDE下Run Unit Test是成功的,但是在Maven中失败的原因。

因此测者提醒,提交单元测试代码之前,一定要在本地mvn test一次脚本。

解决的办法

在maven插件配置:(surefire2.14以下版本)

<plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-surefire-plugin</artifactId>     <version>2.12</version>     <configuration>         <forkMode>always</forkMode>     </configuration> </plugin>复制代码

重点加入configureation的配置部分

在maven插件配置:(surefire2.14及其以上版本)

 <plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-surefire-plugin</artifactId>     <version>2.19.1</version>     <configuration>         <reuseForks>false</reuseForks>         <forkCount>1</forkCount>     </configuration> </plugin>复制代码

在2.14以上的版本中,forkMode配置项已经废弃了。

另一个可能有效的方法

有时候在webapp项目中进行测试的时候,需要WEB-INF文件夹放在Class Path中,配置如下:

<plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-surefire-plugin</artifactId>     <version>2.19.1</version>     <configuration>         <reuseForks>false</reuseForks>         <forkCount>1</forkCount>         <argLine>-Xmx1024m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8 -Xverify:none</argLine>         <additionalClasspathElements>             <additionalClasspathElement>${basedir}/src/main/webapp/‌WEB-INF/</additionalClasspathElement>         </additionalClasspathElements>     </configuration> </plugin>复制代码

关注测者,关注测试

转载于:https://juejin.im/post/5c1af242e51d453ba97d2ace

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101246.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Platform SDK February 2003 For VC6.0(ISO打包版)

    Platform SDK February 2003 For VC6.0(ISO打包版)最近编程需要使用到PlatformSDKFebruary2003ForVC6.0内的文件,于是就下载使用。发现网络上面都是给的微软的官方下载地址,并没有打包下载的地址,于是就顺手打包了以下所有的文件,保存为iso格式,方便使用。这里制作了一个新的启动安装向导PlatformSDKFebruary2003.iso下载地址:348Mhttp://pan.baidu.com/s/

  • 指令重排的意义[通俗易懂]

    指令重排的意义[通俗易懂]现代计算机由三大部分组成(已经转化为以存储器为中心)1.CPU(CentralProcessingUnit)中央处理器,核心部件为ALU(ArithmeticLogicUnit,算术逻辑单元)和CU(ControlUnit,控制单元)2.I/O设备(受CU控制)3.主存储器(MainMemory,MM),分为RAM(随机存储器)和ROM(只读存储器)//CPU与MM合…

  • vue中解决跨域问题_js跨域解决方案

    vue中解决跨域问题_js跨域解决方案如果你是一个Web前端工程师,那么跨域这个问题肯定是绕不开的!1.创建vue.config.js设置devServer属性module.exports={devServer:{//webpack-dev-server配置host:’localhost’,port:8080,//配置本项目运行端口proxy:{…

  • setContentView源码学习

    setContentView源码学习参考博客:https://blog.csdn.net/qq_17250009/article/details/52242895https://www.jianshu.com/p/40a9c93b5a8dhttps://www.jianshu.com/p/e42b638944ae特别说明,我用的API版本是25,这句话后面会用到,特别注意!!!今天突然有个想法:不同的布局文件,相…

  • cssText属性的使用「建议收藏」

    cssText属性的使用「建议收藏」cssText是什么?简单来说是设置元素的style属性值,比如 ele.style.cssText = 'display: block';

  • 简述51单片机的内部结构_51单片机的硬件结构及其作用

    简述51单片机的内部结构_51单片机的硬件结构及其作用【1.基本组成】单片机是在一块芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O等计算机所需要的基本功能部件的大规模集成电路,又称MCU。51单片机内包含下列几个部件:一个8位CPU一个片内震荡器及时钟电路一个片内4KBROM程序存储器128字节RAM数据存储器可寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路32条可编程的I/O线(4个8位并行I/O端口)两个16位的定时/计数器一个可编程全双工串行口5个中断源、两个优先级嵌套中断结构

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号