文章目录
- 0. 了解Junit5
- 1. 注解
- 2. 断言
- 3. 用例执行顺序
- 4. 测试套件(Suite)
- 5.参数化
0. 了解Junit5
Java版本最低要求为8。Junit是一个开源的java语言的单元测试框架。java方向使用最广泛的单元测试框架。使用java开发者都应当学习Junit并且掌握单元测试的编写。
selenium 和 Junit
举个栗子:假如说我们要实现一个灯泡,selenium就是灯泡,junit就是电源。
通过maven安装Junit依赖的包:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>1.8.2</version>
<scope>test</scope>
</dependency>
1. 注解
@Test
表示一个方法/用例
@BeforeEach
: 执行其他用例前都会执行一次@BeforeEach的用例
@BeforeAll
: 在所有其他用例前执行一次 BeforeAll用例,使用@BeforeAll
注解的方法/用例必须是静态static的方法.
@AfterEach
: 其他方法执行后,都要执行一遍
@AfterAll
: 所以方法执行之后才被执行.
如@BeforeEach
的例子如下:
2. 断言
写自动化测试,测试结果分为两种,要么成功的,要么失败的。
assertEquals(expect,actual)
: 校验期望值和实际值是否匹配
assertNotEquals(expect,actual)
: 校验期望值和实际值是否不匹配
assertTure(),assertFalse()
: 参数是表达式,参数是boolean类型.
assertNull()
: 判断是否为Null
assertNotNull()
: 判断是否不为Null
如下assertEquals
案例:
static public void ddd()
{
// 是相同,没有断言
Assertions.assertEquals("baiduyixia","baiduyixia");
System.out.println("ddd");
}
3. 用例执行顺序
Junit的默认执行顺序是不确定的。官方文档没有明确给出。
我们仍然可以使用Junit里提供 的方法来手动设置用例的执行顺序。
文档中给出排序方法非常多 :诸如方法名的排序,标签的排序。
为什么需要Junit用到排序方法?
如果用例之间存在关联关系,那么就需要手动的指定用例的执行顺序.
我们在编写测试用例的时候应该尽可能的保持用例的独立性。
4. 测试套件(Suite)
注意: 如下按照从左往右执行测试用例.
1)指定类,添加到套件中并执行
//如下按照从左往右执行测试用例.
@Suite
@SelectClasses({autotest.class},{.....}) // 加载autotest.java下的所有用例
public class runAllSuite {
}
2)指定包,添加到套件中并执行(执行包下面所有以Test命名的文件中的所有@Test注解的用例)
5.参数化
@Parameterizedtest
标注方法类型为参数化 , 不需要再添加@Test
注解,如果添加了,该用例会多执行一遍.
参数来源有常见的三种方式:
1) 单参数 @ValueSource(类型s= {参数1,参数2,........})
valueSource中支持的类型有:
- short
- byte
- int
- long
- float
- double
- char
- boolean
- java.lang.String
- java.lang.Class
如下图案例:printName函数执行了4次,分别打印hhh,jjj
2) 多参数@CsvSource
delimiter : 指定一组参数的分隔符,默认为 逗号.
如果一组参数包含了逗号,需要使用 ‘’ 号
3) 多参数@CsvfileSource
如果参数非常多,在代码中编写不太好看,就可以借助文件注入的方式来添加.
@CsvfileSource(指定文件路径)
3.1) 指定文件路径为当前项目下resources文件夹中的csv文件.
3.2) 指定文件路径为本地任意文件夹下的csv文件.
4) 动态参数
4.1) 单参数
参数为数据来源的方法名,如果不指定数据来源,则默认找根用例同名的静态方法.
4.2) 多参数