• JUnit4 学习记录


    JUnit4学习

    基本知识

    Junit最初是由Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework),为单元测试(Unit Test)的支持框架。用来编写和执行重覆性的测试。即所谓白盒测试。

    它包括了以下的特性:

    1.       对预期结果作断言

    2.       提供测试装备的生成与销毁

    3.       易于组织执行测试

    4.       图形与文字界面的测试器

    环境配置:

    环 境:

           Eclipse 中配置junit,选择项目Junit4(在Package Explorer中) -> 右击鼠标 -> 选择properties -> 选择Java Build Path (在左边的菜单中) -> 在右边选择标签 Libraries  -> 单击按钮“Add Library”  -> 选择JUnit , 单击按钮 “Next>”  -> 选择JUnit library version 为: JUnit4 -> 单击按钮“Finish” –> 单击按钮 “OK”

         Junit4是Junit框架有史以来的最大改进,其主要目标是利用java5的Annotation特性来简化测试用例的编写。

    JUnit 4 常用的几个annotation 介绍

    @Before:初始化方法,在任何一个测试执行之前必须执行的代码;

    @After:释放资源,在任何测试执行之后需要进行的收尾工作。在每个测试方法执行之后执行一次,该annotation只能修饰public void 方法;

    @Test:测试方法,表明这是一个测试方法。在Junit中将会自动被执行。该annotation只你呢个修饰public void 方法。对于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一 个异常。至于方法内该写些什么,那就要看你需要测试些什么了;在这里可以测试期望异常和超时时间,如 @Test(timeout = 100):我们给测试函数设定一个执行时间,超过了这个时间(100毫秒),它们就会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时, 这样你就可以发现这些Bug了。

    @Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。

    @BeforeClass:针对所有测试,只执行一次,且必须为public static void;

    @AfterClass:针对所有测试,将会在所有测试方法执行结束后执行一次,且必须为public static void;

    所以一个Junit 4 的单元测试用例执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass;每一个测试方法的调用顺序为:@Before –> @Test –> @After。

    常用的断言介绍

    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()

    让测试失败

  • 相关阅读:
    数据库ACID
    tcp ip detatils
    process vs thread
    C++ virtual descructor
    static_cast dynamic_cast const_cast reinterpret_cast总结对比
    Meta Programming
    C++ traits
    c++内存管理
    洛谷 P4136 谁能赢呢?
    洛谷 P1166 打保龄球
  • 原文地址:https://www.cnblogs.com/fengke/p/4800180.html
Copyright © 2020-2023  润新知