• junit 常用注解 + junit 断言详解


    @Test:
        在junit3中,是通过对测试类和测试方法的命名来确定是否是测试,且所有的测试类必须继承junit的测试基类。在junit4中,定义一个测试方法变得简单很多,只需要在方法前加上@Test就行了。
        注意:测试方法必须是public  void,即公共、无返回数据。可以抛出异常。

    @Ignore:
         有时候我们想暂时不运行某些测试方法测试类,可以在方法前加上这个注解。在运行结果中,junit会统计忽略的用例数,来提醒你。但是不建议经常这么做,因为这样的坏处时,容易忘记去更新这些测试方法,导致代码不够干净,用例遗漏。使用此标注的时候不能与其它标注一起使用,如:和@Test 标注一起使用,那就没用了

    @BeforeClass:
        当我们运行几个有关联的用例时,可能会在数据准备或其它前期准备中执行一些相同的命令,这个时候为了让代码更清晰,更少冗余,可以将公用的部分提取出来,放在一个方法里,并为这个方法注解@BeforeClass。意思是在测试类里所有用例运行之前,运行一次这个方法。例如创建数据库连接、读取文件等。
        注意:方法名可以任意,但必须是public static void,即公开、静态、无返回。这个方法只会运行一次。

    @AfterClass:
        跟@BeforeClass对应,在测试类里所有用例运行之后,运行一次。用于处理一些测试后续工作,例如清理数据,恢复现场。
        注意:同样必须是public static void,即公开、静态、无返回。这个方法只会运行一次。

    @Before:
        与@BeforeClass的区别在于,@Before不止运行一次,它会在每个用例运行之前都运行一次。主要用于一些独立于用例之间的准备工作。
        比如两个用例都需要读取数据库里的用户A信息,但第一个用例会删除这个用户A,而第二个用例需要修改用户A。那么可以用@BeforeClass创建数据库连接。用@Before来插入一条用户A信息。
        注意:必须是public void,不能为static。不止运行一次,根据用例数而定。

    @After:与@Before对应。

    @Runwith:
        首先要分清几个概念:测试方法、测试类、测试集、测试运行器。
        其中测试方法就是用@Test注解的一些函数。
        测试类是包含一个或多个测试方法的一个Test.java文件。
        测试集是一个suite,可能包含多个测试类。
        测试运行器则决定了用什么方式偏好去运行这些测试集/类/方法。
        而@Runwith就是放在测试类名之前,用来确定这个类怎么运行的。也可以不标注,会使用默认运行器。

    常见的运行器有:
        1. @RunWith(Parameterized.class) 参数化运行器,配合@Parameters使用junit的参数化功能
        2.@RunWith(Suite.class)
           @SuiteClasses({ATest.class,BTest.class,CTest.class})
          测试集运行器配合使用测试集功能
        3.@RunWith(JUnit4.class)
          junit4的默认运行器
        4.@RunWith(JUnit38ClassRunner.class)
          用于兼容junit3.8的运行器
        5.一些其它运行器具备更多功能。例如@RunWith(SpringJUnit4ClassRunner.class)集成了spring的一些功能

    @Parameters: 用于使用参数化功能。
    限时测试:
        对于那些逻辑很复杂,循环嵌套比较深的程序,很有可能出现死循环,因此一定要采取一些预防措施。限时测试是一个很好的解决方案。我们给这些测试函数设定一个执行时间,超过了这个时间,他们就会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时,这样你就可以发现这些Bug了。要实现这一功能,只需要给@Test标注加一个参数即可 (@Test(timeout = 1000)) 以毫秒为单位
    测试异常: 
        @Test(expected = ArithmeticException.class),@Test 标注加上此参数, 当你代码中没有异常,也会抛出异常
     
    Junit 断言详解: 其中方法应用的时候由于其都是static 方法,所以直接调用即可(如:Assert.assertEquals(1,1) )
        断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过。
    assertArrayEquals(expecteds, actuals) 查看两个数组是否相等。
    assertEquals(expected, actual) 查看两个对象是否相等。类似于字符串比较使用的equals()方法
    assertNotEquals(first, second) 查看两个对象是否不相等。
    assertNull(object) 查看对象是否为空。
    assertNotNull(object) 查看对象是否不为空。
    assertSame(expected, actual) 查看两个对象的引用是否相等。类似于使用“==”比较两个对象
    assertNotSame(unexpected, actual) 查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象
    assertTrue(condition) 查看运行结果是否为true。
    assertFalse(condition) 查看运行结果是否为false。
    assertThat(actual, matcher) 查看实际值是否满足指定的条件
    fail() 让测试失败
     
        Junit 5 断言官网:https://junit.org/junit5/ 
  • 相关阅读:
    机器学习三--分类--邻近取样(Nearest Neighbor)
    机器学习二——分类算法--决策树DecisionTree
    机器学习一--基本概念
    python学习--常用正则表达式整理
    python学习--字符编码问题
    python学习--字符串处理相关方法
    python学习--如何在一个for循环中迭代多个可迭代对象(串行,并行)
    python学习--如何对迭代器进行切片操作
    List对象去重
    List 简单升降序实现
  • 原文地址:https://www.cnblogs.com/jingjiren/p/10339039.html
Copyright © 2020-2023  润新知