Junit学习笔记(一):Junit的入门使用

  • junit4和junit3的区别

    JUnit4中所有的测试用例采用@Annotation标注,JUnit3的通过类继承和特定方法名实现,Junit4比Junit3更灵活。

  • JUnit的生命周期

   @BeforeClass、@Before、@Test、@After、@AfterClass

   <<Before Class>>
     <<Person Constructor>>
       <<Before>>
       Test Method 1.
       <<After>>
     <<Person Constructor>>
       <<Before>>
       Test Method 2.
       <<After>>
   <<After Class>>

   @BeforeClass:修饰static的方法,在整个类执行之前执行该方法一次。比如你的测试用例执行前需要一些高开销的资源(连接数据库)可以用@BeforeClass搞定。值得注意的是如果测试用例类的父类中也存在@BeforeClass修饰的方法,它将在子类的@BeforeClass之前执行。
   @AfterClass:同样修饰static的方法,在整个类执行结束前执行一次。如果你用@BeforeClass创建了一些资源现在是时候释放它们了。
   @Before:修饰public void的方法,在每个测试用例(方法)执行时都会执行。
   @After:修饰public void的方法,在每个测试用例执行结束后执行。
   Constructor:每个测试用例都会重新创建当前的Class实例,可以看到Constructor执行了两次。

  • 注解参数

  异常测试:使用@Test中的expected参数

  测试时间:使用@Test中的timeout参数

@Ignore:忽略某个测试用例

  @RunWith:制定测试运行器,如果不指定将使用默认的;

  JUnit中所有的测试用例都是由测试运行器执行的。JUnit提供了默认的测试运行器,但并没有限制我们必须使用默认的运行器(所有的运行器都继承自Runner)。相反,我们不仅可以定制自己的运行器,而且还可以为每个测试类指定使用某个运行器(使用@RunWith)。

  @Suite:测试套件

  用于指定测试的测试组,批量运行测试类的方法;注意:不要有相互包含关系的测试类,死锁。

  @RunWith(Parameterized.class):参数化测试

  指定测试的输入参数

   @Category :测试分组

  可以对各个测试用例进行分组,使你有机会只选择需要的部分用例。

  @IncludeCategory:限制只运行部分测试用例

  @Theory:提供组合的参数

  • Rule

  包含两个注解@Rule和@ClassRule用于修饰Field或返回Rule的 Method,Rule是一组实现了TestRule接口的共享类,提供了验证、监视TestCase和外部资源管理等能力。

  ClassRule提供针对整个类的规则。

    Verifier: 验证测试执行结果的正确性。
    ErrorCollector: 收集测试方法中出现的错误信息,测试不会中断,如果有错误发生测试结束后会标记失败。
    ExpectedException: 提供灵活的异常验证功能。
    Timeout: 用于测试超时的Rule。
    ExternalResource: 外部资源管理。
    TemporaryFolder: 在JUnit的测试执行前后,创建和删除新的临时目录。
    TestWatcher: 监视测试方法生命周期的各个阶段。
    TestName: 在测试方法执行过程中提供获取测试名字的能力。

  • Assume

  Assume直译为假设,是JUnit提供的一套用于判断测试用例的入参是否有业务含义的工具,如果入参不符合预期时会抛出AssumptionViolatedException,默认的BlockJUnit4ClassRunner及其子类会捕获这个异常并跳过当前测试,如果使用自定义的Runner则无法保证行为,视Runner的实现而定。 
  Assume提供的验证方法包括: assumeTrue/assumeFalse、 assumeNotNull、 assumeThat、 assumeNoException

  • Assert

   Assert是JUnit提供的断言类,用于常用的测试结果验证。提供的功能和方法都比较简单实用,这里只用列表简单介绍:
    AssertTrue、AssertFalse:结果的true、false。
    AssertThat:使用Matcher做自定义的校验。
    AssertEquals、AssertNotEquals:判断两个对象是否相等。
    AssertNull、AssertNotNull:判断对象是否为空。
    AssertSame:判断两个对象是否为同一个,不同于equals这里是使用“==”判断。
    AssertArrayEquals:判断两个数组是否相等。

拓展阅读:

Ant 内置了对 JUnit 的支持,它提供了两个 Task:junit 和 junitreport,分别用于执行 JUnit 单元测试和生成测试结果报告。

除此以外Theories还可以支持自定义数据提供的方式,需要继承JUnit的ParameterSupplier类。

时间: 2024-10-10 06:18:20

Junit学习笔记(一):Junit的入门使用的相关文章

nodejs学习笔记之安装、入门

由于项目需要,最近开始学习nodejs.在学习过程中,记录一些必要的操作和应该注意的点. 首先是如何安装nodejs环境?(我用的是windows 7环境,所以主要是windows 7的例子.如果想看linux下的安装可以参考http://www.cnblogs.com/meteoric_cry/archive/2013/01/04/2844481.html) 1. nodejs提供了一些安装程序,可以去官网(http://nodejs.org/download/)按照自己的机器进行下载,下载完

卷积神经网络(CNN)学习笔记1:基础入门

卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Views 概述 卷积神经网络(Convolutional Neural Network, CNN)是深度学习技术中极具代表的网络结构之一,在图像处理领域取得了很大的成功,在国际标准的ImageNet数据集上,许多成功的模型都是基于CNN的.CNN相较于传统的图像处理算法的优点之一在于,避免了对图像复杂的

Node.js学习笔记【1】入门(服务器JS、函数式编程、阻塞与非阻塞、回调、事件、内部和外部模块)

笔记来自<Node入门>@2011 Manuel Kiessling JavaScript与Node.js Node.js事实上既是一个运行时环境,同时又是一个库. 使用Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器. 一个基础的HTTP服务器 server.js:一个可以工作的HTTP服务器 var http = require("http"); http.createServer(function(request, response) { r

软件测试学习笔记:Junit入门

软件测试的第一次上机课上,第一次使用JUint对项目进行测试. 安装是最开始要进行的工作,JUint的安装是比较容易的,只需将需要的jar包引入到项目中即可 最开始的Triangle代码如下: package com.tju.scs; public class Triangle { int a, b, c; public Triangle(){ a = 0; b = 0; c = 0; } public Triangle(int a, int b, int c){ if(a > b) { int

JUnit学习笔记-入门介绍

新建Java项目,目录结构如图 T.java package com.umgsai.junit4; public class T { public int add(int x, int y) { return x + y; } public static void main(String[] args) { System.out.println(new T().add(2, 5)); //单元测试是写一个类要给别人用,测试会不会有bug //不用main方法来测试原因:不能一起运行,大多数情况下

学习笔记之JUnit学习总结 [ 光影人像 东海陈光剑 的博客 ]

JUnit中的assert方法全部放在Assert类中,现在总结一下经常用到的junit类中assert方法. 1.assertTrue/False([String message],boolean condition) 判断一个条件是true还是false. 2.fail([String message,]); 失败,可以有消息,也可以没有消息. 3.assertEquals([String message],Object expected,Object actual); 判断是否相等,可以指

Junit学习笔记

idea中使用junit 选中需要测试的类,使用快捷键ctrl+shit+T,快捷生成junit测试类 在idea中执行junit时,可以使用代码覆盖率形式执行 原文地址:https://www.cnblogs.com/Hawthorn-Garden/p/8442267.html

Junit学习笔记(二): 源码分析(1)

使用ModelGoon画出来的UML图如下: 图中可以分析出: 1)Test是一个接口,TestSuit和TestCase,JUnit4TestAdapter,JUnit4TestCaseFacade都实现了Test类,这一种命令模式,只需要使用Test接口就可以使用到具体的类: 2)JUnit4TestAdapter是适配器, Filterable实现了对用例的过滤, Sortable实现了对用例的排序(按照字母进行排序): 3)TestResult实现了返回结果,TestFailure记录失

Junit学习笔记(二): 源码分析(2)-命令和组合模式

命令模式 命令模式的优点: 命令模式将调用操作的对象与如何实现该操作的对象解耦. 将命令当成一个头等对象,它们可以像一般对象那样进行操纵和扩展 可以将多个命令复合成一个命令,与Composite模式结合使用 增加新的命令很容易,隔离对现有类的影响 可以与备忘录模式配合,实现撤销功能. 命令模式图: 由此带来的好处:1.客户无需使用任何条件语句去判断测试的类型,可以用统一的方式调用测试和测试套件,解除了客户与具体测试子类的耦合2.如果要增加新的TestCase也很容易,实现Test接口即可,不会影