现在做网站还赚钱吗,河北建设机械协会网站,赶集网网站建设费用,怎么做网站官方电话文章目录 一. Junit是什么?二.Junit中常见的注解1. Test2. BeforeAll AfterAll3. BeforeEach AfterEach4. ParameterizedTest参数化5. Disabled6. Order 三. 测试套件1. 通过class运行测试用例2. 通过包运行测试用例 四. 断言 一. Junit是什么?
JUnit是一个用于… 文章目录 一. Junit是什么?二.Junit中常见的注解1. Test2. BeforeAll AfterAll3. BeforeEach AfterEach4. ParameterizedTest参数化5. Disabled6. Order 三. 测试套件1. 通过class运行测试用例2. 通过包运行测试用例 四. 断言 一. Junit是什么?
JUnit是一个用于编写和运行Java程序单元测试的开源框架。 它提供了一组注解和断言方法以及用于执行测试的测试运行器。通过使用JUnit开发人员可以轻松地编写自动化测试用例验证代码的正确性并且能够快速地发现和修复bug。JUnit的使用可以提高代码的质量和可维护性同时也有助于进行持续集成和持续测试。它被广泛应用在Java开发领域中成为了标准的单元测试框架之一。 为什么学了Selenium还需要学习Junit? Selenium是自动化测试框架;Junit是单元测试框架. 拿着一个技术写自动化测试用例(Selenium3) 拿着一个技术管理已经编写好的测试用例(Junit5) 二.Junit中常见的注解
我们本节博客所学习的是Junit5,Junit5中的注解如下:
注解说明Test标识单元测试方法。ParameterizedTest标识参数化测试方法。RepeatedTest标识可重复执行的测试方法。TestFactory标识动态测试方法用于生成测试用例。BeforeEach在每个测试方法之前执行。AfterEach在每个测试方法之后执行。BeforeAll在所有测试方法之前执行只会执行一次。AfterAll在所有测试方法之后执行只会执行一次。DisplayName设置测试类或测试方法的显示名称。Disabled标识禁用的测试类或测试方法。Nested声明内部测试类。Tag为测试类或测试方法添加标签用于分组和过滤。Timeout设置测试方法执行超时时间。ExtendWith注册扩展用于扩展JUnit的功能。RegisterExtension注册扩展实例用于扩展JUnit的功能。
上述表格中,其中黑体为常用的注解,也是接下来主要介绍说明的注解.
想要使用Junit5的框架,我们首先要从中央仓库中引入Maven依赖.代码如下所示:
dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-api/artifactIdversion5.9.1/version/dependencydependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-params/artifactIdversion5.9.1/version/dependency!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params --dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-params/artifactIdversion5.9.1/version/dependencydependencygroupIdorg.junit.platform/groupIdartifactIdjunit-platform-suite/artifactIdversion1.9.1/versionscopetest/scope/dependency!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite --dependencygroupIdorg.junit.platform/groupIdartifactIdjunit-platform-suite/artifactIdversion1.9.1/version/dependency!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine --dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-engine/artifactIdversion5.9.1/versionscopetest/scope/dependency1. Test
Test:用于标识单元测试方法。 Testvoid Test01() {System.out.println(这是JunitTest里面的Test01);}2. BeforeAll AfterAll
BeforeAll:在所有测试方法之前执行只会执行一次。 AfterAll:在所有测试方法之后执行只会执行一次。 Testvoid Test01() {System.out.println(这是JunitTest里面的Test01);}Testvoid Test02() {System.out.println(这是JunitTest里面的Test02);}BeforeAllstatic void SetUp() {System.out.println(这是BeforeAll里面的语句);}AfterAllstatic void TearDown() {System.out.println(这是AfterAll的语句);}3. BeforeEach AfterEach
BeforeEach: 在每个测试方法之前执行。 AfterEach: 在每个测试方法之后执行。 Testvoid Test01() {System.out.println(这是JunitTest里面的Test01);}Testvoid Test02() {System.out.println(这是JunitTest里面的Test02);}BeforeEachvoid BeforeEachTest() {System.out.println(这是BeforeEach里面的语句);}AfterEachvoid AfterEachTest() {System.out.println(这是AfterEach里面的语句);}4. ParameterizedTest参数化
ParameterizedTest: 标识参数化测试方法。 单参数 ParameterizedTestValueSource(ints {1, 2, 3})void Test04(int num) {System.out.print(num);}ParameterizedTestValueSource(strings {1, 2, 3, })void Test05(String number) {System.out.println(number);System.out.println();}如果想要打印空格可以用空字符串 CSV获取参数 ParameterizedTestCsvFileSource(resources test01.csv)void Test06(String name) {System.out.println(name);}resource:test01.csv: 张三1李四1王五1
张三2李四2王五2
张三3李四31方法获取参数 public static StreamArguments Generator() {return Stream.of(Arguments.arguments(1, 张三),Arguments.arguments(2, 李四),Arguments.arguments(3, 王五));} ParameterizedTestMethodSource(Generator)void Test07(int num, String name) {System.out.println(num : name);}5. Disabled
Disabled: 标识禁用的测试类或测试方法。
Disabledvoid Test03() {WebDriver webDriver new ChromeDriver();webDriver.get(https://www.baidu.com);webDriver.findElement(By.cssSelector(#s-top-left a:nth-child(6)));}执行所有测试用例发现: Test03未被执行.
6. Order
Order 注解是 JUnit 5 中用来指定测试方法执行的顺序的注解。通过给测试方法添加 Order 注解并指定一个整数值可以确保测试方法按照指定的顺序执行。
import org.junit.jupiter.api.*;
TestMethodOrder(MethodOrderer.OrderAnnotation.class)
//TestMethodOrder(MethodOrderer.Random.class)
public class JunitTest01 {Order(2)Testvoid B() {System.out.println(B测试用例);}Order(3)Testvoid Test01() {System.out.println(这是Test01测试用例);}Order(1)Testvoid A() {System.out.println(A测试用例);}Order(4)Testvoid Test02() {System.out.println(被忽略的测试用例);}}可以看到,执行顺序使我们所手动指定的顺序. 上述例子中TestMethodOrder(MethodOrderer.OrderAnnotation.class) 注解指定了使用 OrderAnnotation 来排序测试方法。然后每个测试方法都使用 Order 注解指定了它们应该执行的顺序。 需要注意的是:测试方法的默认执行顺序是不确定的.因此使用 Order 注解可以提供一致和可预测的执行顺序。
三. 测试套件
测试套件是一种组织和执行一组测试的方式。在JUnit中可以使用 RunWith 注解和 Suite 类来创建测试套件。
1. 通过class运行测试用例 Suite//通过class测试用例运行SelectClasses({JunitTest03.class, JunitTest.class, JunitTest01.class})public class RunSuite {}2. 通过包运行测试用例
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;Suite
SelectPackages(value {Test09, Test08})
public class RunSuite {
}
package Test08;import org.junit.jupiter.api.Test;public class Test07 {Testvoid Test007() {System.out.println(Test08 pacage Test007);}
}package Test09;import org.junit.jupiter.api.Test;public class Test09 {Testvoid Test01() {System.out.println(package test09 test01);}
}四. 断言
在 JUnit 5 中断言方法位于 org.junit.jupiter.api.Assertions 类中。
使用断言可以在测试中验证预期结果是否与实际结果相符。如果断言失败则测试将被标记为失败并提供有关错误的详细信息。这有助于快速定位和修复问题。
断言方法说明assertEquals(expected, actual)验证两个对象是否相等。可以用于比较基本数据类型、对象和数组。assertTrue(condition)验证条件是否为真。如果条件为真则测试通过否则测试失败。assertFalse(condition)验证条件是否为假。如果条件为假则测试通过否则测试失败。assertNull(actual)验证对象是否为 null。如果对象为 null则测试通过否则测试失败。assertNotNull(actual)验证对象是否不为 null。如果对象不为 null则测试通过否则测试失败。assertSame(expected, actual)验证两个对象引用是否相同。即判断两个对象是否指向同一个内存地址。assertNotSame(unexpected, actual)验证两个对象引用是否不相同。assertArrayEquals(expectedArray, actualArray)验证两个数组是否相等。用于比较数组的元素是否相等。assertThrows(expectedType, executable)验证代码块是否抛出了特定类型的异常。assertTimeout(duration, executable)验证代码块是否在指定的时间内执行完成超过指定时间则测试失败。
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;public class MyTest {Testpublic void test() {String str Hello, World!;int number 42;boolean condition true;assertEquals(Hello, World!, str);assertTrue(number 0);assertFalse(condition);assertNull(null);assertNotNull(str);}
}
上述例子中.assertFalse(condition);即测试中验证预期结果与实际结果不相符.