行为驱动:Cucumber + Selenium + Java(五) - 使用maven来实现cucumber测试和报告
在上一篇中,我们介绍了Selenium + Cucumber + Java框架下的测试用例参数化/数据驱动,这一篇我们来使用maven去搭建cucumber框架以及实现测试报告。
5.1 为什么要用maven
我们在第一篇里是用手工下载jar包的形式去配置的我们的cucumber框架,这是出于学习的目的。实际上,真实项目中一般会使用maven去做环境搭建,也会更方便。
Apache Maven, 是一个软件(特别是Java软件)项目管理及自动构建工具,基于项目对象模型(POM)概念,Maven利用一个中央信息片段能够管理一个项目的构建,报告和文档等步骤。
一般来说,构建工具有以下功能:
1)编译源代码
2)拷贝资源
3)编译和运行测试脚本
4)项目打包
5)项目部署
7)清除
Maven使用一个pom.xml文件来实现以上功能,文件里面主要包含以下内容:
1)项目的描述
2)名称,版本,源码路径,依赖关系
3)插件
4)构建配置简介
5)默认使用XML
5.2 安装maven
安装maven和安装java jdk或者Jmeter差不多,都是下载文件,解压到一个路径,然后配置环境变量,最后在cmd输入查看版本号,来检查是否安装成功。
网上有很多maven安装的教程,这里不再赘述。
Maven下载地址:http://maven.apache.org/download.cgi
5.3 使用maven配置cucumber项目
在eclipse中新建一个maven项目CucumberMVNProject,打开项目自带的pom.xml文件,加入以下依赖信息:
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
</dependency>
<dependency>
<groupId>org.picocontainer</groupId>
<artifactId>picocontainer</artifactId>
<version>2.14</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>1.2.5</version>
</dependency>
修改完毕后保存,就可以看到eclipse会在后台开始去自动下载并添加以上所有项目依赖的jar包。
5.4 测试和报告
配置好项目后,就可以按照我们之前篇幅的介绍去开始自动化代码编写了,编写过程与前几篇没有区别。
注意在runner类中,cucumberOptions,我们加入如下选项:
format = {"pretty", "html:target/cucumber", "json:target/cucumber.json"}
执行完测试,在项目的target文件下面,为我们生成html和json两种格式的测试报告。
html格式的默认报告形式如下:

如果我们结合扩展报告功能,还可以生成格式更为美观,功能更为强大的报告:

结合jenkins的cucumber report插件:



可以说,强大的报告功能是使用cucumber这个框架一个重要的优势,特别是对于项目管理和客户而言,征服他们有时候就需要这么一张美观好懂的报告。
留言回复666,下一篇我们就介绍如何实现功能更为强大的cucumber测试报告。
行为驱动:Cucumber + Selenium + Java(五) - 使用maven来实现cucumber测试和报告的更多相关文章
- 行为驱动:Cucumber + Selenium + Java(一) - 环境搭建
1.1 什么是行为驱动测试 说起行为驱动,相信很多人听说过. 行为驱动开发-BDD(Behavior Driven Development)是一个诞生于2003年的软件开发理念.其关键思想在于通过与利 ...
- 行为驱动:Cucumber + Selenium + Java(四) - 实现测试用例的参数化
在上一篇中,我们介绍了Selenium + Cucumber + Java框架下的使用Tags对测试用例分组的实现方法,这一篇我们用数据表格来实现测试用例参数化. 4.1 什么是用例参数化 实际测试中 ...
- 行为驱动:Cucumber + Selenium + Java(二) - 第一个测试
在上一篇中,我们搭建好了Selenium + Cucumber + Java的自动化测试环境,这一篇我们就赶紧开始编写我们的第一个BDD测试用例. 2.1 创建features 我们在新建的java项 ...
- 行为驱动:Cucumber + Selenium + Java(一) - Cucumber简单操作实例
场景(Scenarios) 场景是Cucumber结构的核心之一.每个场景都以关键字“Scenario:”(或本地化一)开头,后面是可选的场景标题.每个Feature可以有一个或多个场景,每个场景由一 ...
- 行为驱动:Cucumber + Selenium + Java(二) - extentreports 测试报告+jenkins持续集成
1.extentreports 测试报告 pom文件 <dependency> <groupId>com.vimalselvam</groupId> <art ...
- 行为驱动:Cucumber + Selenium + Java(三) - 使用标签实现测试分组
在上一篇中,我们写出了Selenium + Cucumber + Java环境下的第一个BDD自动化测试用例,这一篇我们说说怎么用标签对用例进行分组. 3.1 Cucumber标签 实际工作中,我们的 ...
- 自动化测试框架selenium+java+TestNG——TestNG注解、执行、测试结果和测试报告
TestNG是java的一个测试框架,相比较于junit,功能更强大和完善,我是直接学习和使用的TestNG就来谈下TestNG的一些特点吧. TestNG的特点 注解 TestNG使用Java和面向 ...
- selenium第一课(selenium+java+testNG+maven)
selenium介绍和环境搭建 一.简单介绍 1.selenium:Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包 ...
- maven+selenium+java+testng+jenkins自动化测试
最近在公司搭建了一套基于maven+selenium+java+testng+jenkins的自动化测试框架,免得以后重写记录下 工程目录 pom.xml <project xmlns=&quo ...
随机推荐
- 关于Random(47)与randon.nextInt(100)的区别
参考https://blog.csdn.net/md_shmily92/article/details/44059313 相关文章random.nextInt()与Math.random()基础用法 ...
- orcl数据库先决条件检查时失败
在服务里面开启下面服务,在cmd输入 services.msc 就能打开[服务] 在cmd输入以下命令 我的是server服务没开,然后开了资源共享,就安装成功了
- Hibernate Annotation _List/Map
// Student.java 实体类 package com.tao.pojo; import java.util.List; public class Student { private int ...
- BZOJ_4867_[Ynoi2017]舌尖上的由乃_分块+dfs序
BZOJ_4867_[Ynoi2017]舌尖上的由乃_分块+dfs序 Description 由乃为了吃到最传统最纯净的美食,决定亲自开垦一片菜园.现有一片空地,由乃已经规划n个地点准备种上蔬菜.最新 ...
- 【数学基础篇】---详解极限与微分学与Jensen 不等式
一.前述 数学基础知识对机器学习还有深度学习的知识点理解尤为重要,本节主要讲解极限等相关知识. 二.极限 1.例子 当 x 趋于 0 的时候,sin(x) 与 tan(x) 都趋于 0. 但是哪一个趋 ...
- CSS fixed 定位元素失效的问题
一个示例 考察下面的代码: <head> <title>css filter issue</title> <style> body { height: ...
- Java进阶篇设计模式之六 ----- 组合模式和过滤器模式
前言 在上一篇中我们学习了结构型模式的外观模式和装饰器模式.本篇则来学习下组合模式和过滤器模式. 组合模式 简介 组合模式是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来 ...
- JS 各种宽高
1.window的各种宽高 outerWidth.innerWidth.outerHeight.innerHeight outerHeight 获取浏览器窗口外部的高度(单位:像素).表示整个浏览 ...
- WAF开放规则定义权:专家策略+用户自定义策略=Web安全
在第一期“漫说安全”栏目中,我们用四格漫画的形式介绍了基于深度学习的阿里云WAF到底智能在哪里,能帮客户解决什么问题. 在今天的这期栏目里,我们依然通过漫画这种通俗易懂的方式,与大家分享阿里云WAF的 ...
- Android版数据结构与算法(六):树与二叉树
版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 之前的篇章主要讲解了数据结构中的线性结构,所谓线性结构就是数据与数据之间是一对一的关系,接下来我们就要进入非线性结构的世界了,主要是树与图,好了接 ...