junit 常用注解 + junit 断言详解

摘要:
@测试:在junit3中,它通过命名测试类和测试方法来确定测试是否为测试,所有测试类都必须继承junit的测试基类。在运行结果中,junit将统计被忽略的案例数,以提醒您。例如,@RunWith集成了spring@Parameters的一些函数:用于使用参数化函数。这类似于使用“!=”比较两个对象assertTrue以查看运行结果是否为真。

@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/ 

免责声明:文章转载自《junit 常用注解 + junit 断言详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇nginx 流媒体 flv 播放 以及上传大小 配置文件设置Java回调实现异步 (转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

2小时入门Robot Framework

1、介绍 1.1、介绍Robot         Robot Framework是一个基于关键字驱动的自动化测试框架。通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例         Robot Framework官方网站:http://robotframework.org/ 1.2、安装 1.2.1...

JUnit使用简介

JUnit使用简介       Unit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。       JUnit是由 Erich Ga...

1.如何在JMeter中使用JUnit

您是否需要在测试过程中使用JUnit?要回答这个问题,我们先来看看单元测试。 单元测试是软件测试生命周期中测试的最低分辨率。运行单元测试时,需要在应用程序中使用最小的可测试功能,将其与其他代码隔离,并确定其行为是否符合预期。这使您可以在开始构建更大的模块之前验证正在测试的应用程序的小“单元”是否正常工作。 Junit是迄今为止最流行的Java语言单元测试框...

安卓下如何使用JUnit进行软件测试

软件测试作为程序员必备的一项技能是决定软件开发周期长短以及软件运行成败的关键,可以说好的软件不是代码写得好而是有效的测试决定的。本文将介绍在android下利用eclipse进行开发时如何使用JUnit进行单元测试。一、测试的分类(仅举例其中一些方法)【根据测试是否知道代码】 1、黑盒测试(测试的时候不知道具体代码):指的是把被测的软件看作是一个黑盒子,我...

判定表法设计测试用例

判定表也称我决策表,能表示输入条件的组合,以及与每一输入组合对应的动作组合。与因果图法相似判定表法主要侧重输入条件之间的逻辑关系。 1.判定表主要包含以下五部分: 条件桩:列出所有可能的条件 条件项:列出所有的条件取值组合 动作桩:列出所有可能的操作 条件项:列出在每一种条件取值组合的情况下,执行动作桩中的哪些动作。 规则:一种条件取值组合与其对应的动作...

在线测试JavaScript代码性能

(寻龙分金看缠山,一重缠是一重关,关门如有八重险,不出阴阳出八卦) JSLint JSLint是基于Web的验证JavaScript错误代码的工具。它拥有的功能及特定的设置来使用您的需求,自定义你的验证算法。 JsUnit JsUnit是一款在客户端(在浏览时)的单元测试JavaScript框架。对JavaScript而言,JUnit就像是它的一个端口。当...