模块测试是软件开发流程中的关键步骤,在软件开发基础理论里,越早发现bug,修补的费用越低。模块测试就属于测试工作人员/开发者提前介入测试的一种方式,在代码还没宣布提测前,提早对函数公式、类开展测试。可是许多情况下通常由于新项目时间较为焦虑不安,进而忽视了模块测试,那样许多bug很有可能要到提测后,乃至就一直掩藏在代码中没法被发觉。这就等同于在代码中掩埋了炸弹。因而模块测试是十分需要的,它是确保代码实行的主要方式。
在Java行业里,最著名的模块测试架构便是Junit了。 JUnit 有着较长的进步历程和持续演化的充实作用,深受大部分 Java 开发人员的亲睐。
全新的Junit版本是Junit5,这一版本可以说成 JUnit 模块测试架构的一次巨大更新,最先必须 Java 8 以上的软件环境,尽管在旧版本 JDK 也可以编译程序运作,但要彻底应用 JUnit 5 作用, JDK 8 自然环境是不可缺少的。
Junit5的首要特点有:
1. 给予最新的结论和测试注释,支持测试类嵌入
2. 更丰富的测试方法:支持动态性测试,反复测试,参数化设计测试等
3. 完成了模块化设计,让测试实行和测试发觉等不一样控制模块解耦,降低依靠
4. 给予对 Java 8 的支持,如 Lambda 关系式,Sream API等
下面,大家来学习培训下Junit的一些基本上应用。
在项目中引进Junit依靠
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.5.2</version>
<scope>test</scope>
</dependency>
先写一个简易的测试类
@DisplayName(\"第1个测试类\")public class DemoTest {
@BeforeAll
public static void init() {
System.out.println(\"复位数据信息\");
}
@AfterAll
public static void end() {
System.out.println(\"清理空间\");
}
@BeforeEach
public void setup() {
System.out.println(\"现阶段测试方式逐渐\");
}
@AfterEach
public void tearDown() {
System.out.println(\"现阶段测试方式完毕\");
}
@DisplayName(\"第1个测试\")
@Test
void test1() {
System.out.println(\"第1个测试逐渐测试\");
}
@DisplayName(\"第2个测试\")
@Test
void test2() {
System.out.println(\"第2个测试开始测试\");
}}
好多个常见的注释表述:
@DisplayName:测试类在测试汇报中的名字,可以加进类上,还可以加在方式 上
@BeforeAll和@AfterAll:他们界定了全部测试类在进行前及其完毕时的实际操作,只有装饰静态方法,主要运用于在测试全过程中所需求的全部数据信息和外界网络资源的复位和清除
@BeforeEach和@AfterEach:他们所标明的办法会在每一个测试测试用例方式逐渐前和终止时实行,主要是承担该测试测试用例所需求的软件环境的打算和消毁。
在idea中运作测试类,见到控制面板打印信息如下所示:
能够看见,在全部测试全过程中,init函数公式和end函数只实行了一次,setup和tearDown函数在每一次运作test1、test2函数公式前后左右各自实行。
可重复性测试
在函数公式上加上@RepeatedTest注释可以特定反复实行的频次
@DisplayName(\"我的第三个测试-结论\")
@RepeatedTest(3)
void test3() {
System.out.println(\"我的第三个测试逐渐测试\");
Assertions.assertEquals(1, 1);
}
实行代码,能够看见test3函数连续实行了3次
免费领 码同学们手机软件测试 课程内容手记 很多学习材料 完整视频 全新面试问题,可以分享文章内容 私聊「码同学们666」获得材料哦
结论
在Junit5中,给予了新的结论类Assertions,普遍的api:
assertEquals:分辨2个数据信息是不是相同
assertNotEquals:分辨2个数据信息是不是不相同
assertNotNull:分辨目标是不是为空
实例:
@DisplayName(\"第4个测试\")
@Test
void test4() {
System.out.println(\"第4个测试逐渐测试\");
Assertions.assertEquals(1, 2);
}
实行测试,能够看见case实行不成功
参数化设计测试
在Junit5中,对参数化给予了十分丰富的支持,例如固定不动二维数组、csv文件等。
最先在新项目中加上参数化设计依赖包
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.5.2</version>
<scope>test</scope>
</dependency>
二维数组化主要参数
在测试函数公式上加上参数化设计有关的注释就可以,如:
@DisplayName(\"第5个测试-参数化设计测试-数据\")@ParameterizedTest
@ValueSource(ints = {1,2,3})
void test5(int num) {
System.out.println(\"现阶段数据为:\" num);
}
注释表述:
@ParameterizedTest:运作参数化设计测试
@ValueSource:主要参数由来为二维数组,支持各种各样基本数据类型的二维数组,如整形二维数组ints,字符串数组strings,chars等
依照以上配备,test5函数公式会运作3次,每一次会把二维数组中的原素传到num值
Junit支持将主要参数数据信息载入到一个csv文件中,随后在测试测试用例中载入csv文件中的数据信息。
在新项目resource文件目录下新创建一个csv文件,内部结构储存登录名和token的相匹配数据信息
@DisplayName(\"第8个测试-参数化设计测试-csv文件\")
@ParameterizedTest
@CsvFileSource(resources = \"/output.csv\")
void test8(String name, String token) {
System.out.println(\"现阶段名字为:\" name \",现阶段token为:\" token);
}
@CsvFileSource:特定csv文件的途径
在函数公式名上界定csv文件中每列相匹配的主要参数名,那样csv文件中有几行数据信息,test8函数公式便会运作几回,而且每一次都是会传到相匹配列的数据信息。
以上便是Junit常见的一些应用情景,大量Junit的操作方法,可以去Junit官网查询有关的实例。
END
免费领码同学们手机软件测试课程内容手记 很多学习材料 学习培训完整视频,可以了解大家微信公众号哦:自动化设计测试
文中版权归创作者全部,一切类型的转截都请联络创作者获取受权并标明来源。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。