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. Python socket粘包解决

    socket粘包: socket 交互send时,连续处理多个send时会出现粘包,soket会把两条send作为一条send强制发送,会粘在一起. send发送会根据recv定义的数值发送一个固定的 ...

  2. 2018.9.25 NOIP模拟赛

    *注意:这套题目应版权方要求,不得公示题面. 从这里开始 Problem A XOR Problem B GCD Problem C SEG 表示十分怀疑出题人水平,C题数据和标程都是错的.有原题,差 ...

  3. 理解 Python 装饰器看这一篇就够了

    讲 Python 装饰器前,我想先举个例子,虽有点污,但跟装饰器这个话题很贴切. 每个人都有的内裤主要功能是用来遮羞,但是到了冬天它没法为我们防风御寒,咋办?我们想到的一个办法就是把内裤改造一下,让它 ...

  4. 6th-Python基础——集合、函数

    1.集合 主要作用: (1)去重 (2)关系测试,交集.差集difference().并集union().反向差集symmetric_difference().子集issubset().父集issup ...

  5. Qt获取选择的文件夹和文件路径

    获取文件夹路径 static QString getExistingDirectory(QWidget *parent = Q_NULLPTR, const QString &caption ...

  6. P2922 [USACO08DEC]秘密消息Secret Message

    传送门 思路: 还是比较水的(不看题解不看书),用 vis 存字典树上的每个点是多少个单词的前缀,bo 来存每个点是多少个单词的结尾(坑点:会有很多相同的单词,不能只有 bool 来存).统计时:① ...

  7. Hive数据导入导出

    Hive三种不同的数据导出的方式 (1)  导出到本地文件系统 insert overwrite local directory '/home/anjianbing/soft/export_data/ ...

  8. [Struts2] <s:property>标签

    调用类中的属性,通过get方法调用,而非其属性名调用. 比如A类中有属性a1,a1的get方法是getA1Method(); 相应Action类中的get方法是getA1Action(). 那么需要通 ...

  9. android ncnn

    1.下载解压ndk wget https://dl.google.com/android/repository/android-ndk-r17b-linux-x86_64.zip unzip andr ...

  10. Bilinear CNN与 Randomly Wired Neural Network

    最近主要学习了两篇论文以及相关的代码. 1.Bilinear CNN 这篇论文主要是在细粒度分类上应用的,在全连接层之前,在所有的卷积计算完成之后,进行的Bilinear计算,关键的代码如下: def ...