• Junit的常用操作


    注:本篇文章讲解的是junit5

     

    目录

    Juint是什么

    Juint需要导入的依赖

    Juint常用注解

     Junit执行顺序

     参数化

    断言

    测试套件


    Juint是什么

    Juint 是 Java 的一个单元测试框架. 也是回归测试框架. 使用 Junit 能让我们快速的完成单元测试。

    注意:Junit 测试也是程序员测试,即白盒测试,它需要程序员知道被测试的代码如何完成功能,以及完成什么样的功能

    Juint需要导入的依赖

    本篇文章junit代码需要的依赖, 这里给大家贴出来

    1. org.junit.jupiter
    2. junit-jupiter-api
    3. 5.9.2
    4. org.junit.jupiter
    5. junit-jupiter-params
    6. 5.9.2
    7. org.junit.platform
    8. junit-platform-suite
    9. 1.9.2
    10. org.junit.jupiter
    11. junit-jupiter-engine
    12. 5.9.2

    Juint常用注解

    @Test: 在类上注解,i表名当前类是一个测试用例

    @BeforeAll: 一个类中,所有方法执行之前会执行一次

    @AfterAll: 一个类中,所有方法执行结束会执行一次

    @BeforeEach: 每个方法执行执行都会执行一次这个方法

    @AfterEach: 每个方法执行结束之后都会执行一次这个方法

    @BeforeAll @AfterAll 与 @BeforeEach @AfterEach 区别在于

    @BeforeAll @AfterAll 

    修饰的方法是static void的,也就是说是属于类的,在一个类中一共只会执行一次

    @BeforeEach @AfterEach

    修饰的方法是void的,会在类中的每个方法执行 之前/之后 都会执行一次

    还有一个常用方法是:

    @Disabled: 忽略当前测试用例,不执行 

    1. public class junit1 {
    2. @Test
    3. void test1(){
    4. WebDriver webDriver=new ChromeDriver();
    5. webDriver.get("https://www.baidu.com/");
    6. }
    7. @Disabled //忽略当前测试用例,不执行
    8. @Test
    9. void test2(){
    10. System.out.println("测试用例2");
    11. }
    12. @Test
    13. void test10(){
    14. System.out.println("测试用例10");
    15. }
    16. @BeforeAll
    17. static void test3(){
    18. System.out.println("类前置");
    19. }
    20. @AfterAll
    21. static void test4(){
    22. System.out.println("类后置");
    23. }
    24. @BeforeEach
    25. void test5(){
    26. System.out.println("方法前置");
    27. }
    28. @AfterEach
    29. void test6(){
    30. System.out.println("方法后置");
    31. }
    32. }

    通过这个执行结果也可以清晰的看到执行的顺序  以及执行的次数

     Junit执行顺序

    那么如果方法多了,哪个方法优先执行呢?

    默认顺序由方法名hashcode值来决定,如果hash值大小一致,则按名字的字典顺序确定

    由于hashcode的生成和操作系统相关(以native修饰),所以对于不同操作系统,可能会出现不一样的执行顺序,在某一操作系统上,多次执行的顺序不变.

    我们也可以进行设置:

    设置有两种方式:按照指定顺序执行  /  按照随机顺序执行,不可以同时存在

    1. //声明按照指定顺序进行执行
    2. @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
    3. //随机顺序执行
    4. //@TestInstance(MethodOrderer.Random.class)//不可以同时存在
    5. public class junit {
    6. @Order(2)
    7. @Test
    8. void test1(){
    9. WebDriver webDriver=new ChromeDriver();
    10. webDriver.get("https://www.baidu.com/");
    11. }
    12. @Disabled //忽略当前测试用例,不执行
    13. @Test
    14. void test2(){
    15. System.out.println("测试用例2");
    16. }
    17. @Order(5)
    18. @Test
    19. void test10(){
    20. System.out.println("测试用例10");
    21. }
    22. @Order(4)
    23. @Test
    24. void test11(){
    25. System.out.println("测试用例11");
    26. }
    27. @Order(8)
    28. @Test
    29. void test12(){
    30. System.out.println("测试用例12");
    31. }
    32. @Order(1)
    33. @Test
    34. void test13(){
    35. System.out.println("测试用例13");
    36. }
    37. @BeforeAll
    38. static void test3(){
    39. System.out.println("类前置");
    40. }
    41. @AfterAll
    42. static void test4(){
    43. System.out.println("类后置");
    44. }
    45. @BeforeEach
    46. void test5(){
    47. System.out.println("方法前置");
    48. }
    49. @AfterEach
    50. void test6(){
    51. System.out.println("方法后置");
    52. }
    53. }

    执行结果就是按照我们设置的顺序进行执行的, 设置的数字顺序可以不连续, 可以为负数,

    他会按照从小到大的顺序进行执行:

     参数化

    单参数

    多参数: 1. cvs 传参   2. 方法传参

    1. //参数传递
    2. public class junit2 {
    3. public static Stream m1() {
    4. return Stream.of(Arguments.arguments("1,zhang",
    5. "2,lissss",
    6. "3,wang",
    7. "4,lisi"));
    8. }
    9. //单参数
    10. // @Test
    11. @ParameterizedTest//不可以和Test同时存在
    12. @ValueSource(strings = {"1","2","3"})
    13. void test10(String str){
    14. System.out.println(str);
    15. }
    16. //多参数 Csv1
    17. @ParameterizedTest
    18. @CsvSource({"1,2","s,3"})
    19. void test(String s,int n){
    20. System.out.println(s+" "+n);
    21. }
    22. //多参数 Csv2
    23. @ParameterizedTest
    24. @CsvFileSource(resources="test1.csv")
    25. void test2(int id,String name){
    26. System.out.println(id+" " +name);
    27. }
    28. //使用方法进行多参数传递
    29. @ParameterizedTest
    30. @MethodSource("m1")
    31. void test3(String id,String name){
    32. System.out.println(id+" "+name);
    33. }
    34. }

    断言

    1. //断言
    2. @ParameterizedTest
    3. @ValueSource(strings={"1"})
    4. void test4(String s){
    5. //断言相等
    6. Assertions.assertEquals(s,"1");
    7. //断言不相等
    8. Assertions.assertNotEquals(s,2);
    9. //断言为空
    10. Assertions.assertNull(s);
    11. //断言不为空
    12. Assertions.assertNotNull(s);
    13. }

    测试套件

    Junit是怎么进行管理测试用例的呢?

    就是通过测试套件.

    1.以类为单位进行执行

    1. @Suite
    2. @SelectClasses({junit.class,junit2.class})
    3. public class suit1 {
    4. }

    2.以包为单位进行执行

    1. @Suite
    2. @SelectPackages({"org.example.junit1","org.example.junit2"})
    3. public class suit1 {
    4. }

  • 相关阅读:
    猴子也能学会的jQuery第十期——jQuery元素操作(下)
    Oracle VM VirtualBox安装并下载安装CentOS7
    信息系统项目管理师 第四版 口诀
    理德外汇名人故事:“专家中的专家”约翰·内夫:教你系统的投资方法
    如何使用Tushare+ Backtrader进行股票量化策略回测
    Jupyter Notebook修改默认浏览器方法
    Servlet基础
    MySQL 数据库 增删查改、克隆、外键 等操作
    上周热点回顾(1.8-1.14)
    二叉树定义
  • 原文地址:https://blog.csdn.net/m0_64188165/article/details/133468468