junit 经常使用注解 + junit 断言详解

@Test:
    在junit3中,是经过对测试类和测试方法的命名来肯定是不是测试,且全部的测试类必须继承junit的测试基类。在junit4中,定义一个测试方法变得简单不少,只须要在方法前加上@Test就好了。
    注意:测试方法必须是public  void,即公共、无返回数据。能够抛出异常。

html

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

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

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

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

@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的一些功能api

@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() 让测试失败
 
    
    在此,但愿此篇博客能帮助到一些人。有不足之处,有问题的话能够博客上Q我,看到就会回复    
 
相关文章
相关标签/搜索