TestNG和Maven配置指南

为了有用,自动测试应该运行得非常快。 否则,将不会在开发期间经常运行,甚至在开发人员工作站的默认配置中将被忽略。 最简单的规则是仅编写小型单元测试,该测试将模拟给定类的邻居。 但是,有时在IoC容器上下文(Spring,CDI,Guice)或使用嵌入式数据库(H2,HyperSQL,Derby)中测试某些东西很有用/必需。 不幸的是,即使是这种类型的测试,也可能显着增加总体测试执行时间。 我在一个项目中遇到这种情况,并且为了避免使用skipTests标志,我使用了TestNG和Maven Surefire插件中的组开发了一种解决方案。

测试分为三组:

  • 非常快速的真实单元测试(默认情况下全部为)–在开发过程中应经常运行(通过IDE或通过mvn测试,mvn软件包)
  • 集成速度较慢,但​​自给自足的测试(设置Spring上下文和/或使用嵌入式H2数据库)–至少应在提交/推送之前或在给定部件上运行时运行(通过IDE或通过mvn集成测试,mvn安装)
  • 真正的集成测试(要求访问远程服务器,例如测试Web服务或REST)应每天由CI服务器或从事集成工作的开发人员运行(mvn安装,mvn集成测试并启用其他配置文件)

为了实现给定的测试(或测试类),必须将其标记为“自集成”或“集成”(在方法或类级别):

@Test(groups = "self-integration")
public void shouldInitializeChainedAppInfoProperly() {
@Test(groups = "integration")
public class FancyWebServiceIntegrationTest {

Maven Surefire插件应配置为从默认执行中排除“自集成”和“集成”测试组,并在“集成测试阶段”添加“自集成”:

<build><plugins>(...)<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${ver.surefire-plugin}</version><executions><execution><id>default-test</id> <!-- to override default configuration - in fact: unit tests --><configuration><excludedGroups>self-integration,integration</excludedGroups></configuration></execution><execution><id>self-integration</id><phase>integration-test</phase><goals><goal>test</goal></goals><configuration><groups>self-integration</groups><reportsDirectory>target/self-integration-surefire-reports/</reportsDirectory></configuration></execution></executions></plugin></plugins></build>

另外(如果需要),可以创建在“集成测试”阶段配置的带有“集成”测试组的单独的单独配置文件。

<profiles>(...)<profile><id>integration</id><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${ver.surefire-plugin}</version><executions><execution><id>integration</id><phase>integration-test</phase><goals><goal>test</goal></goals><configuration><groups>integration</groups><reportsDirectory>target/integration-surefire-reports/</reportsDirectory></configuration></execution></executions></plugin></plugins></build></profile></profiles>

可以在AppInfo的人工分支(pom.xml和示例测试类)中找到工作示例。 根据您的需求很容易采用它。

三个测试组都有各自独立的报告格式,以免彼此覆盖。 作为扩展,可能可以将它们合并到一个汇总的测试报告中。

参考: 跑得快单元测试的时候,慢整合很少- TestNG的和Maven配置指南从我们JCG伙伴马尔钦Zajaczkowski在固态软博客。


翻译自: https://www.javacodegeeks.com/2012/04/testng-and-maven-configuration-guide.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微型计算机广告牌实验报告,微型计算机实验报告1资料.doc

实验报告1. 实验名称程序编译及调试2. 实验目的掌握汇编语言语句格式&#xff0c;程序结构&#xff0c;上机调试步骤和各种类型程序的设计方法。了解汇编语言的基本语法&#xff0c;汇编程序的功能和汇编&#xff0c;调试过程&#xff0c;伪指令&#xff0c;汇编语言程序设计&a…

mybatis入门-新手注意问题

参数问题 在映射文件中通过parameterType指定输入参数的类型&#xff1b;在映射文件中通过resultType指定输出结果的类型。 占位符和拼接符问题 #{}表示一个占位符号&#xff0c;#{}接收输入参数&#xff0c;类型可以是简单类型&#xff0c;pojo、hashmap。 如果接收简单类型&a…

python文件管理包_Python标准库04 文件管理 (部分os包,shutil包)

Python标准库04 文件管理 (部分os包&#xff0c;shutil包)在操作系统下&#xff0c;用户可以通过操作系统的命令来管理文件&#xff0c;参考。Python 标准库则允许我们从 Python 内部管理文件。相同的目的&#xff0c;我们有了两条途径。尽管在 Python 调用标准库的方式不如操作…

Delphi Berlin 10.1 for iOS 成生 info.plist 顺序改变了

在 Delphi Seattle 10 update 1 版本&#xff08;含之前版本&#xff09;&#xff0c;只要 Project > Build 会立即生成 info.plist 如果需要修改 info.plist 可以利用 TMS 提供的修改工具 Fixing on iOS 9 来修改。 在 Delphi Berlin 10.1 版本&#xff0c;顺序改变了&…

MANIFEST.MF和feature.xml版本控制规则

我永远忘记了OSIF插件和功能的 MANIFEST.MF和feature.xml中的依赖项声明的规则是什么。 谷歌搜索经常导致沮丧而不是答案。 所以&#xff0c;因为今天我实际上找到了这些规则的简要列表&#xff0c;所以我想在这里重新发布它们&#xff0c;并进行一些小的修改以帮助阐明。 OSGi…

远程桌面连接时无法访问远程计算机的计算机属性提示系统调用失败,远程过程调用失败【应对技巧】...

喜欢使用电脑的小伙伴们一般都会遇到win7系统远程过程调用失败的问题&#xff0c;突然遇到win7系统远程过程调用失败的问题就不知道该怎么办了&#xff0c;其实win7系统远程过程调用失败的解决方法非常简单&#xff0c;按照1&#xff1a;第一步我们可以看到sql server数据库出现…

MVC View显示详解(RenderBody,RenderPage,RenderSection,Partial)

一、Views文件夹 -> Shared文件夹下的 _Layout.cshtml 母版页 RenderBody 当创建基于_Layout.cshtml布局页面的视图时&#xff0c;视图的内容会和布局页面合并&#xff0c;而新创建视图的内容会通过_Layout.cshtml布局页面的RenderBody()方法呈现在标签之间。 RenderPage从…

如何在Windows系统下安装多个Redis实例

如何在Windows系统下安装多个Redis实例 转载于:https://www.cnblogs.com/xiaohui1990/p/5505944.html

注册表中shell文件不见了_win7系统注册表中的shell文件不小心被删除的解决方法...

我们在操作电脑的时候,win7系统注册表中的shell文件不小心被删除的问题对于我们来说其实是比较少见的&#xff0c;一般情况下的正常使用都不会遇到win7系统注册表中的shell文件不小心被删除的状况。但在win7系统中如果由于我们个人的不当操作导致win7系统注册表中的shell文件不…

库卡机器人C4计算机无法启动,KUKA-C4标准版机器人启动时序

描述1.T1模式下选择CELL程序&#xff0c;手动执行程序&#xff0c;注意中间路径&#xff0c;有时机器人不在HOME点附近&#xff0c;回原点的过程中需慢速运行&#xff0c;直至到达BCO。2.松开执行键&#xff0c;重新按下&#xff0c;信息栏出现“运行方式错误”提示&#xff0c…

ADF:将UI类别与动态表单一起使用

JDev 11g R2具有有趣的新功能“ UI类别”。 它使我们可以在视图对象定义级别上以声明方式对VO的属性进行分组。 例如&#xff0c;我的VEmployees视图对象的“ UI Categories”选项卡如下所示&#xff1a; 默认情况下&#xff0c;每个视图对象都有一个预定义的类别“默认”。 我…

Exchange超级实用命令行

发现Powershell很强大以后&#xff0c;就欲罢不能了。来点干货 有PST文件的没有成功导出&#xff0c;原因是执行时会报错&#xff0c;说需要64位Outlook&#xff0c;dotnet4.5以上环境。还有说法是Exchange2010开始不支持PST导入导出。 整理了一下最近尝试比较实用的命令&#…

位数不足前面补0mysql语句_全网热议:监控补光灯爆亮闪瞎眼!你遇到过吗?

唔知大家有无咁ga体会每当夜晚揸车经过一排监控补光灯瞬间像“瞎子”那样看不到东西&#xff0c;“威力”堪比远光灯(△ 11月12日晚&#xff0c;安定门外大街&#xff0c;主路上的监控补光灯)近日&#xff0c;“监控补光灯太刺眼&#xff0c;给夜间行车安全造成极大隐患”一事引…

4种常见的 PHP 设计模式

工厂模式 在大型系统中&#xff0c;许多代码依赖于少数几个关键类。需要更改这些类时&#xff0c;可能会出现困难。例如&#xff0c;假设您有一个从文件读取的 User 类。您希望将其更改为从数据库读取的其他类&#xff0c;但是&#xff0c;所有的代码都引用从文件读取的原始类。…

三网合一是指计算机网,什么是三站合一网站?什么是三网合一网站?

原标题&#xff1a;什么是三站合一网站&#xff1f;什么是三网合一网站&#xff1f;三站合一网站和三网合一网站是一个概念&#xff0c;都是指PC网站手机网站微信网站1. 什么是电脑网站指针对普通PC电脑上或笔记本的屏幕进行排版设计的网站&#xff0c;只有在普通PC电脑上或笔记…

使用HMAC(Play 2.0)保护REST服务

我们有HTTPS&#xff0c;还需要什么&#xff1f; 当您谈论基于REST的API的安全性时&#xff0c;人们通常会指向HTTPS。 借助HTTPS&#xff0c;您可以使用每个人都熟悉的方法轻松保护您的服务免遭窥视。 但是&#xff0c;当您需要更高级别的安全性或HTTPS不可用时&#xff0c;您…

安装卡主_智能温室四周玻璃的安装学问还这么多

智能玻璃温室大棚是指顶部及四周以玻璃为覆盖材料的尖顶温室大棚&#xff0c;玻璃温室大棚这几年的流行是由于纹络型温室顶部阳光板问题的抗老化方面容易出现问题。因此很多客户为了种植获得更高的透光率&#xff0c;更长的使用年限&#xff0c;因而多选择全玻璃温室大棚。那么…

String类详解(1)

首先String是一个类。  1&#xff0c;实例化String类方法。 1&#xff09;直接赋值&#xff1a;String name"haha"; 2)通过关键字&#xff1a;String namenew String("haha"); 2&#xff0c;String类的数据比较。 首先回顾一下&#xff0c;基础数据的比较…

第六章 计算机网络与i教案,大学计算机基础教案第6章计算机网络基础与应用.docx...

广东第二师范学院计算机科学系教案课程名称计算机基础I课程代码111012003课程类型公必√□ 专必□ 专选□ 公选□授课方式讲授□ 实践□案例讨论□ 上机√□考核方式考试□√ 考查□上机□√ 论文□教学总学时数16学分数1学时分配课堂讲授 2 学时&#xff1b;实践课 14 学时教材…

分享性能优化问题

谈谈性能优化问题 代码层面&#xff1a;避免使用css表达式&#xff0c;避免使用高级选择器&#xff0c;通配选择器。 缓存利用&#xff1a;缓存Ajax&#xff0c;使用CDN&#xff0c;使用外部js和css文件以便缓存&#xff0c;添加Expires头&#xff0c;服务端配置Etag&#xff0…