Maven在自动化中可以帮助我们更好的管理我们的工程,今天就来仔细学习下它的用法;

1.一个重要的插件:Maven surefire-plugin

用Maven的这个插件的目的主要是为了:用Maven直接调用testng的xml文件实现测试脚本的运行;

1.1引用

引用Maven surefire-plugin的方法如下:打开pom文件,找到Effective POM;

使用此插件,需要复制:

      <plugin><artifactId>maven-surefire-plugin</artifactId><version>2.12.4</version>

到pom.xml文件,将其导入到pom.xml文件的时候,需要对其进行包装,包装后的引用如下:

<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<excludes>
<exclude>TestModule1/TestMavenSurefirePlugin.java</exclude>
<exclude>TestModule2/TestJavaInPom.java</exclude>
</excludes>
<sureXmlFiles>
<sureXmlFile>
${project.basedir}/src/test/java/TestModule1/TestMavenSurefirePlugin.xml
</sureXmlFile>
</sureXmlFiles>
</configuration>
</plugin>
</plugins>
</build>

注意下:<excludes>标签,当没有此标签的时候,maven执行测试用例的时候,执行的是所有测试用例,加上此标签后,会将此标签下的测试用例进行排除后,执行指定的测试用例。

1.2Maven执行测试用例的两种方式

注意:maven-surefire-plugin必须与testng.jar同时导入到pom.xml文件中的时候才可以使用Maven来调试testng的测试用例;Maven执行测试用例有两种方式。

1.使用cmd命令行。

cd到项目指定路径下,执行mvn test即可。

2.执行pom.xml文件,右键->Run  as  maven test执行。

1.3用Maven运行测试用例的好处

1.在一定程度上减少了必要步骤,尤其是命令行运行的方式,我们只需要有工程即可;

2.Maven运行的方式,会自动在target文件夹下生成测试报告。

1.4使用Maven运行不包含testng XML文件的java文件

具体场景如下:

此时pom.xml文件配置如下:

<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<includes>
<include>
TestModule2/TestJavaInPom.java
</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>

运行此脚本还是可以通过cmd命令行和pom.xml文件两种方式。请注意<includes>标签里面可以有多个<include>。即可以运行多个测试类。

1.5Maven设置多线程测试用例

实例:

import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;
import com.xinbao.utils.Browsers;
import com.xinbao.utils.BrowsersType;
public class TestMutipleThreads {private WebDriver driver;@Testpublic void visit360So() {Browsers browser = new Browsers(BrowsersType.chrome);driver = browser.driver;driver.get("https://www.so.com/");driver.quit();}@Testpublic void visitBKY() {Browsers browsers = new Browsers(BrowsersType.ie);driver = browsers.driver;driver.get("https://www.cnblogs.com/");driver.quit();}
}

上面的测试类中我们需要验证两个测试用例,一个是打开360搜索,一个是打开博客园,我们此时想同时启用两个线程来验证测试用例,就需要在:pom.xml文件中设置如下:

<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<excludes>excludes标签是排除的意思
<exclude>TestModule3/TestMutipleThreads.java</exclude>
<exclude>TestModule2/TestJavaInPom.java</exclude>
</excludes>
<parallel>methods</parallel>
<threadCount>3</threadCount>
<sureXmlFiles>
<sureXmlFile>
${project.basedir}/src/test/java/TestModule1/TestMavenSurefirePlugin.xml
</sureXmlFile>
</sureXmlFiles>
</configuration>
</plugin>
</plugins>
</build>

即需要添加:<parallel>和<threadCount>两个标签,请注意:设置的threadCount的数量最好大于测试用例数量,这样可以极大的提高运行效率。

1.6Maven远程调试

应用场景:什么时候会用到远程调试呢?我们知道我们开发代码会在某个IDE里进行(我习惯用Eclipse),它里面有自带的java编译体系,maven里面也有区别与IDE的java编译体系,当我们在IDE里正常编译的脚本,用maven编译确报错的时候,我们就需要对其进行远程调试。

使用步骤如下:

1.在Eclipse里找到报错的类,打上断点;

2.登录远程机器;

3.在cmd命令行下,执行mvn -Dmaven.surefire.debug test命令即可在cmd命令行下显示出报错信息;

需要注意的是:我们使用远程调试的时候,需要在Pom.xml文件的build标签下添加:<defaultGoal>compile</defaultGoal>

2.Maven其他应用

2.1Maven的使用范围

maven的依赖jar是有范围的,maven中用dependency scope来限制依赖范围。主要记住以下两种情形。

1.所引用的jar存在于maven仓库中,这里不区分maven私库、中央库亦或是本地库,只要所引用的jar在maven库中,此时默认的<scope>的值就是compile。即如下形式:

 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>compile</scope></dependency>

2.当所引用的jar以外部引用的形式提供,此时maven不会去仓库查找它,要想在pom.xml文件中引用这类jar的时候,此时<scope>的值为system,并且要配置其路径,即增加systemPath标签,需要如下进行:

  <dependency><groupId>com.haibao</groupId><artifactId>log4i</artifactId><version>1.2.11</version><scope>system</scope><systemPath>${project.basedir}/files/log4j-1.2.11.jar</systemPath></dependency>

2.2Maven项目引入同是Maven项目的依赖

想在Maven项目里引入同是Maven项目的依赖非常简单,步骤如下:

1.工程->右键->Run  as ->Maven install,会将此Maven工程打成jar包,并且放置在本地Maven仓库中。

出现上图中提示,证明已经构建完成。

2.引用的时候,直接pom.xml文件右键,Add dependency,输入关键字,会优先从本地仓库中将此jar包查询出来,直接引用即可。

2.3Maven继承

当我们在一个Maven工程里需要的许多jar来自于另一个Maven工程,此时我们可以使用Maven继承,继承的方式如下:

假设我们现在有两个工程,父Maven工程为:MavenPlugin,子Maven工程为MavenExtends,此时我们想要MavenExtends工程下的pom.xml文件集成自MavenPlugin工程下的pom.xml文件。步骤如下:

1.将MavenPlugin的pom.xml文件的Packing修改为pom。(一般情况下必须为jar);

2.配置MavenExtends工程的pom.xml;

3.配置完成,点击保存即可。此时查看MavenExtends工程的pom.xml文件,增加<parent>页签(放在<project>页签中间),如下所示:

 <parent><groupId>com.haibao</groupId><artifactId>MavenPlugin</artifactId><version>0.0.1-SNAPSHOT</version><relativePath>../MavenPlugin/pom.xml</relativePath></parent>

此时MavenExtends即可继承工程MavenPlugin下的所有jar包;

selenium_maven高级实战相关推荐

  1. Docker容器虚拟化技术---Docker高级实战(DockerFile)2

    Docker容器虚拟化技术-Docker高级实战(DockerFile) DockerFile是一个文本格式的配置文件,用户可以使用DockerFile来快速创建自定义的镜像. 1. DockerFi ...

  2. 2018最新APP界面设计教程---手机ui高级实战案例 视频教程(价值320元)

    课程简介: 适用人群         适合有基础的学员 学到什么         火星人UI设计培训结合大量的实战案例,从ICON的设计构思开始,到APP界面设计,全方面解析UI设计工作流程和设计理论 ...

  3. 千锋2018年最新php基础进阶加高级实战全套视频教程

    ==========课程目录=========== 14__RESTful API与服务器环境 13__千万级秒杀项目 12__Swoole课程 11__Laravel框架 10__微博登录_短信发送 ...

  4. 【2021版PHP高级教程-Swoole4.X从入门到精通全套高级实战】

    众所周知,Swoole 和我们传统的 PHP 开发差别是有的,需要理解的概念也是有的.使用目前一些基于 Swoole 的框架开发的话,从开发习惯上和传统的TP 框架相差不多.根据官方介绍它是一个底层通 ...

  5. 网易微专业python数据分析统计服_40套大数据云计算高级实战精品,数据分析,数据仓库,数据爬虫,项目实战,用户画像, ......

    40套大数据云计算高级实战精品,数据分析,数据仓库,数据爬虫,项目实战,用户画像,日志分析,Hadoop,Flink,Spark,Kafka,Storm,Docker,ElaticStack等视频教程 ...

  6. 微信小程序高级实战开发培训视频

    JEECG社区<微信小程序高级实战开发培训视频> 课      程:  微信小程序高级实战开发培训视频 讲      师:   周俊峰.张加强 开课时间:  2016年12月06日开课 * ...

  7. 58-Vue高级实战

    Vue高级实战 Vue-cli: 什么是Vue-cli: Vue cli是基于Vue的应用开发提供的一个标准的脚手架工具 为应用搭建基础的框架结构,提供插件.开发服务.Preset.构建打包功能 Vu ...

  8. 第十二章:Ozzie调度系统高级实战-CSDN就业班-专题视频课程

    第十二章:Ozzie调度系统高级实战-26人已学习 课程介绍         1.Oozie核心原理与概念 2.Oozie安装与部署 3.Oozie调度MapReduce与Hive Job 4.Ooz ...

  9. 今天,学会这几个Vue高级实战技巧就够了!

    前言 今天,我们来分享几个不可不知的vue高级实战技巧. 技巧 自动注册组件 我们平时可能这样引入注册组件.每次都得需要在头部引入,然后注册,最后在模板上使用. <template>< ...

最新文章

  1. 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
  2. 数据、事实、实体、值对象、事务、不变性
  3. Linuxnbsp;rpmnbsp;命令参数使用…
  4. 中国致密气行业十四五前景分析及发展规划远景报告2022年版
  5. python 基础篇(一)--linux命令篇
  6. log4j2 mybatis 显示 sql 和 结果集
  7. BCC异或校验 Linux C
  8. 计算机二级考试开考多久能出来,【计算机二级】明天就要开考了,你们准备好了吗?...
  9. 使用JS清空fileupload 控件值
  10. php rgb,php颜色转换函数hex-rgb
  11. Apache Flink 在 bilibili 的多元化探索与实践
  12. java synchronized概念用法
  13. 生物图像处理软件_细胞分割
  14. 联想y7000 Linux显卡驱动,联想Y7000安装显卡驱动
  15. 2010不断创新的供应链应用模式
  16. python中单位转换_python的单位转换问题
  17. 【AP/AR】借项通知单和贷项通知单的区别
  18. 如何在BIOS中开启虚拟化技术
  19. vscode前端常用插件
  20. 构建一体化数字营销平台,助力医药企业实现销售转化能级大幅跃迁 | 案例研究

热门文章

  1. day04-判定表法
  2. SC60 Android 9.0 gt911 touch支持
  3. Panels 使用教程
  4. 最短路模型(bfs)
  5. rust自我解脱_失恋后安慰的话 自我解脱
  6. Android玄铁剑之TextView之图文并茂
  7. 世界棒球经典赛:大谷翔平击败美国队,日本队第三次夺冠
  8. 基于TensorFlow和mnist数据集的手写数字识别系统 ,可识别电话号码,识别准确率高,有对比实验,两组模型,可讲解代码
  9. [2017.11.05]正则表达式集合list
  10. 协调能力体现在哪些方面