JUnit - 使用断言

断言

所有的断言都包含在 Assert 类中

public class Assert extends java.lang.Object

这个类提供了很多有用的断言方法来编写测试用例。只有失败的断言才会被记录。Assert 类中的一些常用的方法列式如下:

序号  方法和描述
1 void assertEquals(boolean expected, boolean actual)
检查两个变量或者等式是否平衡

2

void assertTrue(boolean expected, boolean actual)
检查条件为真

3

void assertFalse(boolean condition)
检查条件为假

4

void assertNotNull(Object object)
检查对象不为空

5

void assertNull(Object object)
检查对象为空

6

void assertSame(boolean condition)
assertSame() 方法检查两个相关对象是否指向同一个对象

7

void assertNotSame(boolean condition)
assertNotSame() 方法检查两个相关对象是否不指向同一个对象

8

void assertArrayEquals(expectedArray, resultArray)
assertArrayEquals() 方法检查两个数组是否相等

待测试类

 /**
*
* @author Administrator
* junit测试用例类
*/
public class Demo { /**
* 获取两数之和
* @param numOne int.
* @param numTwo int.
* @return int numOne+numTwo.
*/
public int getAdd(int numOne,int numTwo) {
return numOne+numTwo;
} /**
* 获取两数比较的真假
* @param numOne int.
* @param numTwo int.
* @return boolean numOne>numTwo.
*/
public boolean getDifference(int numOne,int numTwo) {
return numOne>numTwo;
} /**
* 获取一个字符串
* @return String.
*/
public String getString() {
return "不提也罢";
}
}

junit测试类

 import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;//静态导入类的所有静态方法
import org.junit.Test;
/*junit测试类*/
public class DemoTest {
Demo demo = new Demo(); @Test
public void testGetAdd() {
int add = demo.getAdd(2, 3);
assertThat(add,is(5));//变量是否等于指定值
assertThat(add, not(4));//变量是否不等于指定值
} @Test
public void testGetDifference() {
boolean difference = demo.getDifference(3, 2);
assertTrue(difference);//判断真假
} @Test
public void testGetString() {
String string = demo.getString();
//测试变量是否包含指定字符
assertThat(string, containsString("也"));
//测试变量是否已指定字符串开头
assertThat(string, startsWith("不"));
//测试变量是否以指定字符串结尾
assertThat(string, endsWith("罢"));
//测试变量是否等于指定字符串
assertThat(string, equalTo("不提也罢"));
}
}

结果通过,无错误。如图:

注释

注释就好像你可以在你的代码中添加并且在方法或者类中应用的元标签。JUnit 中的这些注释为我们提供了测试方法的相关信息,哪些方法将会在测试方法前后应用,哪些方法将会在所有方法前后应用,哪些方法将会在执行中被忽略。
JUnit 中的注释的列表以及他们的含义:

序号 注释和描述
1 @Test
这个注释说明依附在 JUnit 的 public void 方法可以作为一个测试案例。
2 @Before
有些测试在运行前需要创造几个相似的对象。在 public void 方法加该注释是因为该方法需要在 test 方法前运行。
3 @After
如果你将外部资源在 Before 方法中分配,那么你需要在测试运行后释放他们。在 public void 方法加该注释是因为该方法需要在 test 方法后运行。
4 @BeforeClass
在 public void 方法加该注释是因为该方法需要在类中所有方法前运行。
5 @AfterClass
它将会使方法在所有测试结束后执行。这个可以用来进行清理活动。
6 @Ignore
这个注释是用来忽略有关不需要执行的测试的。
 import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test; public class ClassDemoTest { //在类加载前,只执行一次
@BeforeClass
public static void beforeClass() {
System.out.println("类加载前");
} //在类加载后,只执行一次
@AfterClass
public static void afterClass() {
System.out.println("类加载后");
} //在每一个测试方法执行前执行一次
@Before
public void before() {
System.out.println("测试方法执行前");
} //在每一个测试方法执行前执行一次
@After
public void after() {
System.out.println("测试方法执行后");
} //测试单元1
@Test
public void testCase1() {
System.out.println("测试单元1");
} //测试单元2
@Test
public void testCase2() {
System.out.println("测试单元2");
}
@Ignore
public void testIgnore() {
System.out.println("Ignore");
} }

执行结果如下:

junit断言和junit注释assert的更多相关文章

  1. The <classpath> or <modulepath> for <junit> must include junit.jar if not in Ant's own classpath

    The <classpath> or <modulepath> for <junit> must include junit.jar if not in Ant's ...

  2. pytest测试框架 -- assert断言和fixture固件

    一.断言 (1)使用assert语句进行断言 # test_run.py @pytest.mark.assert def test_assert(self): r = requests.get(&qu ...

  3. JUnit实战(2) - JUnit核心(使用Suite来组合测试)

    创建Java Project项目:ch02-internals MasterTestSuite.java package com.manning.junitbook.ch02.internals; i ...

  4. JUnit实战(1) - JUnit起步(Parameterized参数化测试)

    创建Java Project项目,项目名称:ch01-jumpstart Calculator.java public class Calculator { public double add(dou ...

  5. junit学习之junit的基本介绍

    Junit目前在一些大的公司或者相对规范的软件中使用的比较多,相当多的小公司并没有把单元测试看的太重要.在大点的公司开发人员每天上班后,第一件事情就是从svn上把自己负责的代码checkout下来,然 ...

  6. junit 常用注解 + junit 断言详解

    @Test: 在junit3中,是通过对测试类和测试方法的命名来确定是否是测试,且所有的测试类必须继承junit的测试基类.在junit4中,定义一个测试方法变得简单很多,只需要在方法前加上@Test ...

  7. [JUnit] Introduce to Junit and it annotations

    Check the get started guid https://junit.org/junit5/docs/current/user-guide/#overview-getting-help p ...

  8. Junit 学习1 junit的简单使用

    package junit; import java.sql.Connection; import java.sql.SQLException; import org.junit.Test; impo ...

  9. Spring是如何整合JUnit的?JUnit源码关联延伸阅读

    上一篇我们回答了之前在梳理流程时遇到的一些问题,并思考了为什么要这么设计. 本篇是<如何高效阅读源码>专题的第十二篇,通过项目之间的联系来进行扩展阅读,通过项目与项目之间的联系更好的理解项 ...

随机推荐

  1. Servlet跳转到JSP页面后的路径问题相关解释

    一.现象与概念 1. 问题 在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同 ...

  2. 【Bilinear interpolation】双线性插值详解(转)

           最近在做视频拼接的项目,里面用到了图像的单应性矩阵变换,在最后的图像重映射,由于目标图像的坐标是非整数的,所以需要用到插值的方法,用的就是双线性插值,下面的博文主要是查看了前辈的博客对双 ...

  3. Learning-Python【20】:Python常用模块(3)—— shelve、pickle、json、xml、configparser

    什么是序列化/反序列化? 序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输,反序列化就是硬盘中或者网络中传来的一种数据格式转换成内存中数据结构 为什么要有序列化/反序列化? 1 ...

  4. python学习----IO模型

    一.IO模型介绍 本文讨论的背景是Linux环境下的network IO. 本文最重要的参考文献是Richard Stevens的"UNIX® Network Programming Vol ...

  5. PSR4规范

    定义类名规则: 完全限定类名必须有一个顶级命名空间(Vendor Name): 完全限定类名可以有多个子命名空间: 完全限定类名应该有一个终止类名: 下划线在完全限定类名中是没有特殊含义的: 字母在完 ...

  6. Intellij IDEA创建git,maven的SpringMVC项目

    Intellij IDEA创建git,maven的SpringMVC项目 原文链接:http://www.cnblogs.com/blog5277/p/8906120.html 原文作者:博客园--曲 ...

  7. oracle 11 g release 2 卸载

    Win 10 系统,Oracle 11 g R 2 ,安装目录C盘根目录 1.停止Oracle的所有服务 打开“服务”窗口,关闭Oracle的所有服务 2.运行Oracle Universal Ins ...

  8. js Array​.prototype​.reduce()

    例子: , , , ]; const reducer = (accumulator, currentValue) => accumulator + currentValue; // 1 + 2 ...

  9. leecode第一百五十五题(最小栈)

    class MinStack { public: stack<int> cur_stack; stack<int> cur_min;//用来存储最小值的栈 int min_nu ...

  10. 关于var time = +new Date;

    文章地址:https://www.cnblogs.com/Raoh/p/4212075.html