allure+maven+junit
1. 环境部署
1.1. 安装allure
https://github.com/allure-framework/allure2/releases/tag/2.13.2
- 下载后解压;
- 双击执行allure-2.13.2\bin\ allure.bat;;
- 将allure-2.13.2\bin目录路径添加到path环境变量中;
- Dos窗口中输入“allure”验证安装。
1.2. 安装maven
1.2.1. 下载地址
https://maven.apache.org/download.cgi
1.2.2. 安装
- 下载后解压;
- 将maven/bin目录路径添加到path环境变量中;
- Dos窗口执行“mvn --version”命令验证安装。
1.2.3. 配置maven本地仓库
- 在maven安装目录下创建“repository”文件夹;
- 打开maven\conf\settings.xml文件设置/path/to/local/repo的值为maven/repository目录路径;
- Dos窗口执行“mvn help:system”验证配置。
1.3. 安装junit
执行maven前在pom.xml文件中配置junit对应的依赖,执行maven时会自动安装junit包到maven本地库。
2. allure使用
allure [options] [command] [command options]
2.1. options
- –help 打印命令行帮助文档
- -q, --quiet 开启静默模式,默认关闭
- -v, --verbose 开启详细模式,默认关闭
- –version 打印命令行版本信息,默认关闭
2.2. commands
- generate [options] 生成报告
-c, --clean 生成报告之前清楚以前的报告,默认关闭
–config [path] 配置文件路径,将覆盖–profile 和–configDirectory的值
–configDirectory 命令行配置目录,默认使用ALLURE_HOME
–profile 命令行配置文件
-o, --report-dir, --output 生成报告的目录,默认allure-report - serve [options] 生成并查看报告
–config [path] 报告文件路径,将覆盖–profile 和–configDirectory的值
–configDirectory 报告所在目录,默认使用ALLURE_HOME
–profile 报告文件名
-h, --host 指定打开报告的web服务器
-p, --port 指定web服务器打开报告的端口号,默认为0 - open [options] 打开生成的报告
-h, --host 指定打开报告的web服务器
-p, --port 指定web服务器打开报告的端口号,默认为0 - plugin [options] 插入报告
–config [path] 配置文件路径,将覆盖–profile 和–configDirectory的值
–configDirectory 命令行配置目录,默认使用ALLURE_HOME
–profile 命令行配置文件
3. maven使用
3.1. maven主要结构
|- src
|- main
|- java # 存放被测试包/类
|- resource # 存放被测试类的依赖包
|- test
|- java # 存放测试包/类
|- resource # 存放测试类的依赖包
|- pom.xml # maven的配置文件
3.2. pom.xml内容介绍
需要的依赖可以到maven prository中央仓库中查找。
地址:https://mvnrepository.com/
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <!-- Maven版本号 -->
<groupId>com.gmrobot</groupId> <!-- 所属工程 -->
<artifactId>MavenProject</artifactId> <!-- 工程名 -->
<version>1.0</version> <!-- 工程版本号 -->
<dependencies> <!-- 添加依赖包 -->
<dependency> <!-- 内容在Maven Repository中寻找 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
3.3. Options
mvn [options] [<goal(s)>] [<phase(s)>]
-am,–also-make 如果指定了项目列表,则构建项目列表中的项目
-amd,–also-make-dependents 如果指定了项目列表,则构建依赖于列表中项目的项目
-B,–batch-mode 以非交互式(批处理)模式运行(进制输出颜色)
-b,–builder 要使用的构建策略的ID
-C,–strict-checksums 如果校验不匹配则构建失败
-c,–lax-checksums 如果检验不匹配则构建警告
-D,–define 定义系统属性
-e,–errors 生成执行错误消息
-emp,–encrypt-master-password 加密master安全密码
-ep,–encrypt-password 加密服务密码
-f,–file 强制使用备用pom文件(或带有pom.xml的目录)
-fae,–fail-at-end 当构建失败后,允许未受影响的构建继续
-ff,–fail-fast 构建一旦失败,则停止后续所有构建任务
-fn,–fail-never 无论结果如何,都不返回构建失败
-gs,–global-settings 全局设置文件的备用路径
-gt,–global-toolchains 全局工具链文件备用路径
-h,–help 描述帮助信息
-l,–log-file 存放所有构建输出的日志文件(禁止输出颜色)
-N,–non-recursive 不要递归到子目录
-npr,–no-plugin-registry neffective, only kept for backward compatibility
-npu,–no-plugin-updates Ineffective, only kept for backward compatibility
-nsu,–no-snapshot-updates Suppress SNAPSHOT updates
-ntp,–no-transfer-progress Do not display transfer progress when downloading or uploading
-o,–offline Work offline
-P,–activate-profiles Comma-delimited list of profiles to activate
-pl,–projects Comma-delimited list of specified reactor projects to build instead of all projects. A project can be specified by [groupId]:artifactId or by its relative path
-q,–quiet Quiet output - only show errors
-rf,–resume-from Resume reactor from specified project
-s,–settings Alternate path for the user settings file
-t,–toolchains Alternate path for the user toolchains file
-T,–threads Thread count, for instance 2.0C where C is core multiplied
-U,–update-snapshots Forces a check for missing releases and updated snapshots on remote repositories
-up,–update-plugins Ineffective, only kept for backward compatibility
-v,–version Display version information
-V,–show-version Display version information WITHOUT stopping build
-X,–debug Produce execution debug output
3.4. 常用命令
- maven clean
对项目进行清理,清理的过程中会删除删除target目录下编译的内容。 - maven compil
编译项目源代码。 - maven test
对项目的运行测试。 - maven packet
可以打包后的文件存放到项目的 target 目录下,打包好的文件通常都是编译后生成的class文件。 - maven install
在本地仓库生成仓库的安装包可以供其他项目引用,同时打包后的文件存放到项目的 target 目录下。
4. junit使用
要安装junit只需要将junit的依赖添加到maven的pom.xml文件中即可,maven工具会自动下并安装到本地仓库。
4.1. 常用注解
- @Test
将一个方法标记为测试方法; - @Before
每一个测试方法调用前必执行的方法; - @After
每一个测试方法调用后必执行的方法; - @BeforeClass
所有测试方法调用前执行一次,在测试类没有实例化之前就已被加载,需用static修饰; - @AfterClass
所有测试方法调用后执行一次,在测试类没有实例化之前就已被加载,需用static修饰; - @Ignore
暂不执行该方法;
4.2. 注意事项
- 用@test注释的方法会被认为是一个测试用例;
- 无论测试有没有成功@AfterClass标记的方法都将被执行;
- 设计测试用例时注意环境的准备和清理动作,保证测试环境可持续使用;
4.3. @Test的一些属性
4.3.1. excepted属性
excepted属性是用来测试异常的,即如果被测试的方法没有抛出异常,测试不通过,抛出异常,则测试通过。
我们在单元测试类中添加异常测试方法:
@Test (expected = Exception.class)
public void testDivideException() throws Exception {
new Junit_Test_Demo().divide(3,0);
fail("除数为零没有抛出异常...");
}
该测试方法是(expected = Exception.class)和fail(“除数为零没有抛出异常…”),会检查是否抛出Exception异常(也可以检查其他异常)。如果抛出异常测试通过,没有抛出异常测试不通过执行fail(“除数为零没有抛出异常…”)。
4.3.2. timeout属性
该方法是用来测试性能的,测试一个方法能不能在规定时间内完成。用法和expected一样。
@Test (timeout = 1000)
public void testDivideTimeout() throws Exception {
new Junit_Test_Demo().divide(6,3);
}
4.4. 代码覆盖率
收集覆盖率,通过Run→Run ‘Junit_Test_DemoTest’ with Coverage,运行结束后,IDEA将会在Projec工具窗口显示每个程序包、类的覆盖率数据,同时在Coverage工具窗和编辑器中也会显示。
5. allure+maven+junit实例
5.1. 使用idea创建maven项目
5.2. 安装junit并测试
5.2.1. pom.xml中添加junit依赖
<dependencies> <!-- 添加依赖包 -->
<dependency> <!-- 内容在Maven Repository中寻找 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
5.2.2. 编写Demo类
public class JunitTestDemo {
// 加法
public int add(int a, int b) {
return a + b;
}
// 减法
public int subtract(int a, int b) {
return a - b;
}
// 乘法
public int multiply(int a, int b) {
return a * b;
}
// 除法
public double divide(int a, int b) throws Exception {
if (b == 0) {
throw new Exception("除数不能为零!");
}
else {
return a / b;
}
}
}
5.2.3. 编写Demo测试类
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class JunitTestDemoTest {
@Before
public void setUp() throws Exception {
System.out.println("单元测试开始前相关操作...");
}
@After
public void tearDown() throws Exception {
System.out.println("单元测试结束后相关操作...");
}
@Test
public void add() {
assertEquals(8, new JunitTestDemo().add(2,6));
}
@Test
public void subtract() {
assertEquals(7, new JunitTestDemo().subtract(9,2));
}
@Test
public void multiply() {
assertEquals(36, new JunitTestDemo().multiply(6,6));
}
@Test
public void divide() throws Exception {
assertEquals(2, new JunitTestDemo().divide(8,4),0.001);
}
}
5.3. 执行maven+junit用例
5.3.1. 在idea中设置执行配置
5.3.2. 执行生成结果
点击执行按钮后,会生成target文件,其中surefire-report目录即为执行报告。
5.4. 使用allure生成报告
打开cmd窗口,cd到target目录下,执行“allure serve .\surefire-report”生成并查看测试报告。如果生成测试报告时有其他配置需求请参阅allure使用章节。