网站做拓扑图编辑,桂平做网站公司,工商局注册公司流程和费用,为企业制定网络营销方案⭐️前言⭐️
本篇文章主要介绍单元测试工具JUnit的使用。 #x1f349;欢迎点赞 #x1f44d; 收藏 ⭐留言评论 #x1f4dd;私信必回哟#x1f601; #x1f349;博主将持续更新学习记录收获#xff0c;友友们有任何问题可以在评论区留言 #x1f349;博客中涉及源码…
⭐️前言⭐️
本篇文章主要介绍单元测试工具JUnit的使用。 欢迎点赞 收藏 ⭐留言评论 私信必回哟 博主将持续更新学习记录收获友友们有任何问题可以在评论区留言 博客中涉及源码及博主日常练习代码均已上传GitHub 内容导读1.注解2.断言3.用例的执行顺序4.参数化5.测试套件1.注解
JUnit提供了非常强大的注解功能通过Test注解修饰到方法上该方法就变为了一个测试方法执行当前类时会自动的执行该类下所有带Test注解的用例。
在使用这些JUnit提供的注解时需要现在pom.xml文件中进行配置 dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversion5.8.2/versionscopetest/scope/dependencyTest示例
除了Test注解外还有以下常用注解
BeforeEach:当前的方法需要在每个用例执行之前都执行一次BeforeAll:当前的方法需要在当前类下所有用例执行之前执行一次且被该注解修饰的方法必须为静态方法AfterEach:当前的方法需要在每个用例执行之后都执行一次AfterAll:当前的方法需要在当前类下所有用例执行之后执行一次且被该注解修饰的方法必须为静态方法
2.断言
检查测试方法的期望结果值和真实返回值通过Assertions类实现。
断言匹配/不匹配assertEquals()、assertNotEquals()断言结果为真/为假assertTrue()、assertFalse()断言结果为空/非空assertNull()、assertNotNull()
Testvoid a() {Assertions.assertTrue(11);}3.用例的执行顺序
如下图所示测试用例的执行并不会按照我们编写代码的顺序来执行 如果在实际测试中我们需要完成连贯的多个步骤的测试是需要规定测试用例执行的顺序的可以通过order注解来实现排序
先使用注解说明当前类下所有的用例需要使用Order注解来进行排序注意该注解必须要用在类上然后通过Order来指定用例的具体顺序
4.参数化
参数化就是尽可能的通过一个用例多组参数来模拟用户的行为 在使用参数化注解之前需要先用ParameterizedTest声明该方法为参数化方法然后再通过注解提供数据来源。
单参数 ValueSource(数据类型方法{参数1参数2…}) 多参数 1.从注解中手动编写数据源 CsvSource({“数据组合1”“数据组合2”…})每个双引号是一组参数测试用例 2.从第三方csv文件读取数据源 如果测试用例较多时在注解处手动编写数据源就有些不方便我们这时就可以借助第三方csv文件来读取数据源 动态参数 // 通过动态方法来提供数据源ParameterizedTestMethodSource(methodParams)void dynamicParamsTest(String name,int age) {System.out.println(name:name,age:age);}static StreamArguments methodParams() throws InterruptedException {// 构造动态参数String[] arrnew String[4];for (int i0;i arr.length;i) {Thread.sleep(500);arr[i]System.currentTimeMillis();}return Stream.of(Arguments.arguments(arr[0],20),Arguments.arguments(arr[1],19),Arguments.arguments(arr[2],18),Arguments.arguments(arr[3],17));}注意当我们不指定数据源方法名时会自动的找跟用例方法名同名的静态方法
5.测试套件
当我们一个类中有多个测试用例时我们不可能挨个去运行那样将会很耗费时间这时我们就需要测试套件来指定类或者指定包名来运行类下或者包下的所有测试用例。
如果要使用测试套件首先我们需要先创建一个类通过Suite注解标识该类为测试套件类而不是测试类 然后指定类或者包来运行其下的所有测试用例 指定类来运行用例 指定包名来运行包下所有的用例 如果使用包名来指定运行的范围那么该包下的测试类的命名需要以Test/Tests结尾T必须大写 ⭐️最后的话⭐️ 总结不易希望uu们不要吝啬你们的哟()ノ~如有问题欢迎评论区批评指正