- · 《自动化应用》栏目设置[06/28]
- · 《自动化应用》收稿方向[06/28]
- · 《自动化应用》投稿方式[06/28]
- · 《自动化应用》征稿要求[06/28]
- · 《自动化应用》刊物宗旨[06/28]
详解maven-surefire-plugin在自动化测试中的应
作者:网站采编关键词:
摘要:定义 maven-surefire-plugin是一个用于mvn生命周期的测试阶段的插件(本文假设读者已经掌握了Maven相关知识点),可以通过一些参数设置方便的在testNG或junit下对测试阶段进行自定义。在实际工
定义
maven-surefire-plugin是一个用于mvn生命周期的测试阶段的插件(本文假设读者已经掌握了Maven相关知识点),可以通过一些参数设置方便的在testNG或junit下对测试阶段进行自定义。在实际工作中我们可以利用该插件指定运行的测试用例,并通过多线程的方式来运行用例,更为方便的是它还可以控制重新运行失败的测试用例的次数,这为持续集成过程中的代码测试工作带来了极大方便!
在pom.xml配置方式这里以配置junit为例,最简单的配置方式就是只声明插件。
? ?
? ?
? ?
此时maven-surefire-plugin会按照如下逻辑去寻找JUnit的版本并执行测试用例。
if the JUnit version in the project >= 4.7 and the parallel attributehas ANY value
??? use junit47 provider
if JUnit >= 4.0 is present
??? use junit4 provider
else
??? use
备注:surefire plugin 不支持junit3.8以下版本
插件手动配置方式如下:
???????
???????
???????
???????
?????????
???????????
???????????
???????????
?????????
???????
常用的功能包括跳过测试阶段Maven在测试阶段出现失败的用例时,默认的行为是停止当前构建,构建过程也会以失败结束。有时候(如测试驱动开发模式)即使测试出现失败用例,仍然希望能继续构建目。
surefire默认的查找测试类的模式如下:
**/Test*.java
**/*
**/*
自定义包含和排除模式,支持ant-style表达式和 正则表达式(%regex[...],按.class文件匹配而不是.java)
???
???
Junit中可以实现用例的分组测试,即运行测试用例时只执行某一类别(具备某一标签)的测试用例,实现方式如下:
首先定义一个接口,作为分组标签
publicinterfaceSmokeTests{
}
用例中使用SmokeTests分组标签
@Test
??? @Category(SmokeTests.class)
???publicvoidtest2()
{
???????try{
??????????? (1000);
??????? }catch(InterruptedException e) {
??????????? //TODOAuto-generated catch block
??????????? ();
??????? }
???????assertEquals(1,1);
??? }
Suite中使用分组标签
@RunWith(Categories.class)
@IncludeCategory(SmokeTests.class)
@SuiteClasses({Test1.class,Test2.class,Test3.class,Test4.class,Test5.class,Test6.class})
publicclassSomokeTests {
}
Pom中配置如下:
使用parallel?参数,在一个?可用参数包括:methods, classes, both(classesAndMethods), suites, suitesAndClasses,suitesAndMethods, classAndMethods, all。
重新运行失败的测试用例当我们的一个测试用例测试的是一个远程服务,在某些情况下可能由于环境问题(比如网络)导致测试用例执行失败,但这并不是程序问题.换句话说,当一个测试用例执行N次,有一次执行成功就认为成功.这个时候我们就需要配置一个参数,运行执行失败的此时用例重新执行.
很多情况下我们希望测试用例没有失败的才能打包,如果出现打包失败,需要立刻停止执行其他测试用例.为满足这个要求,我们需要增加一些配置设定.
首先,在Eclipse 的Maven工程中创建Junit测试用例,代码如下:
publicclassTest1 {
??? @Before
???publicvoidsetUp()throwsException {
??? }
??? @After
???publicvoidtearDown()throwsException {
??? }
??? @Test
???publicvoidtest1()
{
???????try{
??????????? (1000);
??????? }catch(InterruptedException e) {
??????????? //TODOAuto-generated catch block
??????????? ();
??????? }
???????assertEquals(1,2);
??? }
??? @Test
???publicvoid
文章来源:《自动化应用》 网址: http://www.zdhyyzz.cn/zonghexinwen/2020/0729/462.html