使用maven实现单元测试和集成测试

Java单元测试实战 在开发过程中,发现很多人并不理解什么是单元测试,所以专门写一章来讲解关于研发人员单元测试相关知识,同时讲一下如何进行代码覆盖率测试。我们通常可以将测试分为两大类,一种是集成测试,一种是单元测试。 阅读详情
单元测试是对最小单元即方法的测试,要隔离对他模块的依赖,一般采用stub和mock两种方式 
    集成测试是对功能的测试,对于大部分web模块来说需要启动web容器,进行集成测试 
    maven生命周期中已经包含测试(test)和集成测试(integration-test),但未对两种测试代码做区分,需要自己解决启动web容器和代码区分问题。 
    首先配置maven jetty插件在集成测试阶段自动启动 
   
<plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.10</version>
                <configuration>
                    <stopPort>9966</stopPort>
                    <stopKey>stop-jetty-for-it</stopKey>
                    <contextPath>/SDKAuth</contextPath>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                    <jettyEnvXml>${basedir}/src/test/resources/jetty-env.xml</jettyEnvXml>
                </configuration>
                <executions>
                    <execution>
                        <id>start-jetty</id>
                        <!--集成测试前启动jetty-->
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <daemon>true</daemon>
                        </configuration>
                    </execution>
                    <execution>
                        <id>stop-jetty</id>
                        <!--集成测试结束停止jetty-->
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

   然后测试代码进行单元测试和集成测试区分,一般有两种方式: 
   一是使用maven profile,通过profile区分 
   二是根据生命周期,配置maven surefire 插件不同生命周期的includes或/exclueds属性 
   我使用的方式二,在src/test/java目中把单元测试代码放在unit包,集成测试代码放在integration包,具体配置如下: 
  
<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>run-integration-test</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>false</skip>
                            <includes>
                                <include>**/integration/**/*.java</include>
                            </includes>
                        </configuration>
                    </execution>
                    <execution>
                        <id>run-test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>false</skip>
                            <includes>
                                <include>**/unit/**/*.java</include>
                            </includes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.0</version>
                <configuration>
                    <dependentWarExcludes>WEB-INF/lib</dependentWarExcludes>
                </configuration>
            </plugin>
        </plugins>

   可以参考 http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing  
    运行集成测试命令 : mvn integration-test 
引用

2012-05-16 15:36:44.293::INFO:  Started SelectChannelConnector@0.0.0.0:8080 
[INFO] Started Jetty Server 
[INFO] Starting scanner at interval of 10 seconds. 
------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.346 sec 

Results : 

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
maven-integration-test:胃一体化测试演示 maven 集成测试示例 要求 操作系统名称:“linux”,版本:“3.13.0-24-generic”,arch:“amd64”,系列:“unix” Ubuntu 14.04 LTS 跑步 $ mvn clean verify 立即下载

相关推荐

ArcGIS新手必看:5分钟搞定等高线转DEM栅格(附完整操作截图)

本文详细介绍了在ArcGIS中将等高线转换为DEM栅格的完整流程,包括CAD数据预处理、TIN转栅格和直接插值法两种核心方法,以及常见问题排查与优化技巧。通过实战案例和操作截图,帮助GIS新手快速掌握这一测绘数据处理的核心技能,提升地形分析和三维可视化效率。

dapp9builder的博客 286

Maven 如何配置Integration Test

Maven 如何配置Integration Test - 简书

fenzhengdeletu的博客 434

二元交叉熵:分类模型概率校准的数学根基

二元交叉熵(BCE)是二分类任务中实现概率校准的核心损失函数,其本质源于最大似然估计与KL散度,确保模型输出具备真实可解释的概率意义。相比均方误差(MSE)或Hinge Loss,BCE强制优化预测分布与真实伯努利分布之间的信息差异,使p=0.8真正对应约80%的正例发生率,支撑风控、医疗、推荐等高信度场景的阈值决策。它不只影响训练收敛,更决定部署后概率的业务可信度——这正是Focal Loss等变体无法替代其基础地位的根本原因。理解BCE,就是理解分类模型如何从‘打分器’进化为‘概率契约签署者’。

congli3478的博客 1333

maven常用命令

mvn archetype:create 创建Maven项目 mvn compile 编译源代码 mvn test-compile 编译测试代码 mvn test 运行测试 mvn site 生成项目相关信息的网站 mvn clean 清除项目的生成结果 mvn package 打包项目生成jar/war文件 mvn install 安装jar至本地库 mvn deploy 上传至私服 mvn...

无限伟仔的专栏 1368

贝塞尔曲线基础

贝塞尔曲线于1962年由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau演算法开发,以稳定数值的方法求出贝兹曲线。

YiYeZhiNian的博客 2045

Magisk如何针对性隐藏Root避免被检测

Magisk隐藏特征码有两种途径,一种是通过插件,一种是定制源码。插件的方式相对简单,但是使用范围也有限,好处是成本低好上手。定制源码难度大,成本高,好处是稳定,后续也好更新维护。

zhonglunshun的专栏 1万+

Maven(23)如何使用Maven进行集成测试?

在Maven中进行集成测试通常涉及使用插件,该插件专门用于执行集成测试。

qq_43012298的博客 644

手把手教你学Simulink——基于Simulink的CLLC谐振变换器双向对称控制

本文介绍了一种基于Simulink的CLLC谐振变换器双向对称控制方法。针对CLLC拓扑的多阶谐振特性,采用固定频率、50%占空比、仅调节相位差的对称控制策略,实现了宽电压范围调节和全负载ZVS软开关。详细阐述了Simulink建模步骤,包括功率级搭建、相位差生成逻辑和双向切换实现,并通过仿真验证了稳态性能和双向无缝切换能力。该方法解决了传统PFM控制的不足,具有控制简单、效率高、易于工程实现的优势,适用于车载充电和储能系统等双向功率应用场景。

MHD0815的博客 302

Maven命令分开执行单元测试和集成测试

文章目录前提项目结构pom.xml添加源文件设置参数单元测试 & 集成测试的区分运行结果展示不执行任何测试只执行单元测试只执行集成测试全都执行项目代码 前提 项目中一般会包含两种测试:单元测试 + 集成测试。为了方便管理,我个人偏向于将这两种测试放在不同的文件夹下。 项目结构 pom.xml 添加源文件 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-he

wifiiii的博客 1483

YOLOv10改进,YOLOv10添加DICAM,用于水下图像增强模块,以提高朦胧水下图像的质量、对比度和色偏

在水下环境中,成像设备会出现水浑浊、光衰减、散射和颗粒问题,导致图像质量低、对比度差和彩色图像有偏差。这给使用传统视觉技术进行水下状态监测和检查带来了巨大挑战。近年来,水下图像增强因其在提高当前计算机视觉任务在水下目标检测和分割中的性能方面发挥着关键作用而受到越来越多的关注。由于主要从自然场景构建的现有方法在提高色彩丰富度和分布方面存在性能限制,作者提出了一种新颖的基于深度学习的方法,即 Deep Inception 和 Channel-wise Attention Modules (DICAM),以提高朦

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 480

【华为OD机试真题】7、字符串筛选排序 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >输入一个由N个大小写字母组成的字符串 按照ASCII码值从小到大进行排序 查找字符串中第K个最小ASCII码值的字母(k>=1) 输出该字母所在字符串中的位置索引(字符串的第一个位置索引为0) k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引 如果有重复字母则输出字母的最小位置索引

KJ.JK 2267

Maven知识点汇总

目录Maven构建 Maven 跨平台的项目管理工具(无论是在Windows上,还是在Linux或者Mac上,都可以使用同样的命令); 主要服务于基于Java平台的项目构建、依赖管理和项目信息管理; 构建 编译、运行单元测试、生成文档、打包和部署等。 ...............................................................

sc179的博客 1463

XSS漏洞之PDF生成:从XSS到服务端任意文件读取

XSS是最为常见的Web漏洞之一,多年来连续入选OWASP TOP10,相信大家都耳熟能详。 它是一种代码注入类的攻击,是一种客户端侧的攻击,攻击者通过在Web应用中注入恶意JavaScript代码,通过点击URL,最终在受害者浏览器端执行的一种漏洞。主要有反射型XSS、存储型XSS、基于DOM的XSS三类。XSS一些比较常规的危害大概有:重定向浏览器、窃取Cookie、浏览器劫持等。本文章侧重于发现XSS后的进一步利用。 主要介绍在某次实际测试过程中,发现XSS漏洞之后,如何进一步的利用,最终通过XSS达

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 3780

使用Maven Failsafe和JUnit @Category将集成测试与单元测试分开

为什么单元测试应与集成测试分开运行 单元测试级别的TDD相当简单,因为单元测试中的类要么没有复杂的依赖关系,要么使用模拟框架(例如Mockito)来模拟依赖关系。 但是,当我们进入集成测试时,TDDSwift变得困难。 集成测试基本上是在测试具有部分或全部依赖关系的组件,而不是完全模拟它们。 示例包括跨多个层的测试,读取或写入数据库或文件系统的测试,需要启动Servlet容器或EJB容器的测...

最佳 Java 编程 362

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

maven junit测试_使用Maven Failsafe和JUnit @Category将集成测试与单元测试分开

maven junit测试 为什么单元测试应与集成测试分开运行 单元测试级别的TDD相当简单,因为单元测试中的类要么没有复杂的依赖关系,要么使用模拟框架(例如Mockito)来模拟依赖关系。 但是,当我们进入集成测试时,TDDSwift变得困难。 集成测试基本上是在测试具有部分或全部依赖关系的组件,而不是全部模拟它们。 示例包括跨多个层的测试,读取或写入数据库或文件系统的测试,需要启动Serv...

最佳 Java 编程 236

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Scala Scalatest Maven 集成测试配置

第一篇:Scala Scalatest Maven 单元测试配置(测试报告和覆盖率报告) 第二篇:Scala Scalatest Maven 集成测试配置 最近在做单元测试的时候发现了一个问题,我使用静态变量存放环境信息,默认使用的是单元测试的环境(unitTest),可是跑到集成测试(integrationTest)的时候,发现环境信息依然是单元测试的环境信息。因为集成测试也是作为单元测试来...

三丰的专栏 2632

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Maven提高篇系列之二——配置Plugin到某个Phase(以Selenium集成测试为例)

在本系列的上一篇文章中,我们讲到了多模块和继承之间的区别,在本篇文章中,我们将讲到如何将Plugin配置到某个Phase中。   持续交付要“自动化所有东西”,对于集成测试也是一样。集成测试和单元测试相比需要更多的环境准备工作,包括测试数据的准备和启动服务器等。在本篇中我们设想以下一种场景:   你开发了一个web应用,集成测试使用了Selenium,你希望通过一个

ksgt00016758的专栏 3293

maven执行单元和集成测试

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33856370的博客 180

Maven配置Plugin到某个Phase(以Selenium集成测试为例)

持续交付要“自动化所有东西”,对于集成测试也是一样。集成测试和单元测试相比需要更多的环境准备工作,包括测试数据的准备和启动服务器等。在本篇中我们设想以下一种场景: 你开发了一个web应用,集成测试使用了Selenium,你希望通过一个Maven命令跑完所有的测试,包括集成测试。 Maven的plugin包含了一个或多个goal,每一个goal表示plugin的一个操作单位,在plugin开发中,一个goal通常对应于Java类的一个方法(Mojo的execute方法,请参考本系列之六)。一个goa

绝圣弃智-零的博客 550

maven_SonarQube 8.3.x中的Maven项目的测试覆盖率报告

maven 几年前,我写了一篇博客文章,介绍如何在SonarQube中生成测试报告,该报告独立于单元测试和集成测试的测试报告中。 从SonarQube 6.2开始,测试报告不再在这些类别中分开(请参阅SonarQube的博客文章)。 SonarQube将所有测试报告合并为一份涵盖整体的测试报告。 因此,如果您在Maven项目中将单元测试(由Maven Surefire插件运行)和集成测试(由Ma...

cunfen9460的博客 194

Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例)

这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) Maven提高篇系列之(三)——使用自己的Repository(Nexus) Maven提高篇系列之(四)——使用Profile Maven提高篇系列之(五)——处理依赖...

weixin_30362801的博客 87

Jmockit单元测试及DBUnit集成测试搭建

所需pom依赖 &lt;dependency&gt; &lt;groupId&gt;org.jmockit&lt;/groupId&gt; &lt;artifactId&gt;jmockit&lt;/artifactId&gt; &lt;version&gt;1.32&lt;/version&gt; &lt;scope&gt;test&l

qq_32302897的博客 734

Maven:在profile中激活集成测试。

很多项目都有大量的单元测试和集成测试,单元测试的粒度较细,运行较快,集成测试粒度较细,运行较快,集成测试粒度较粗,运行比较耗时。在构建项目或者做持续集成的时候,我们都应当尽量运行所有的测试用例,但是当集成测试比较多的时候,高频率的运行他们就会变得不现实。因此有一种更为合理的做法。例如,每次构建时只运行所有的单元测试,因为这不会消耗太多的时间(可能小于5分钟),然后以一个相对低一点的频率执行所有集成...

孤芳不自赏 850
上一篇: android 文件读取(assets,raw)
下一篇: Maven单元测试(四)
stonenotes123
博客等级 码龄15年 30粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值