Junit 学习笔记

1. 编写测试用例时需要注意

  1. 测试方法上必须使用 @Test 进行修饰
  2. 测试方法必须使用 public void 进行修饰,不能带任何参数
  3. 新建一个车源代码目录来存放我们的测试代码
  4. 测试类的包应该和被测试类保持一致
  5. 测试单元中的每个方法必须可以独立测试,测试方向间不能有任何依赖
  6. 测试类使用 Test 作为类名的后缀(不是必须)
  7. 测试方法使用 Test 作为方法名的前缀(不是必须)

2. 出现结果分析

  1. Failure 一般由单元测试使用的断言方法判断失败所引起,这表示测试点发现了问题,就是说程序输出的结果和我们预期的不一样。
  2. error 是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏 bug
  3. 测试用例不是用来证明你是对的,而是用来证明你没有错(即测试用例用来达到想要的预期结果,但对于逻辑错误无能为力)。

3. Junit 运行流程

举个例子:

public class JunitFlowTest {

    @BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("this is beforeClass...");
} @AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("this is afterClass...");
} @Before
public void setUp() throws Exception {
System.out.println("this is before...");
} @After
public void tearDown() throws Exception {
System.out.println("this is after");
} @Test
public void test1() {
System.out.println("this is test1...");
} }

输出结果如下:

---- IntelliJ IDEA coverage runner ----
sampling ...
include patterns:
com\.test\.util\..*
exclude patterns:this is beforeClass...
this is before...
this is test1...
this is after
this is afterClass... Process finished with exit code 0

解释如下:

  1. @BeforeClass 修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它,而且在内存中它只回存在一份实例,它比较适合加载配置文件
  2. @AfterClass 所修饰的方法通常用来对资源的清理,如关闭数据库的连接
  3. @Before@After 会在每个测试方法的前后各执行一次

4. Junit 常用注解

  1. @Test:将一个普通的方法修饰成为一个测试方法

    • @Test(expected=XX.class):用来捕获异常
    • @Test(timeout=毫秒):到时间后停止测试(用来测试一些循环很久的语句)
  2. @BeforeClass:它会在所有的方法运行前被执行,static 修饰
  3. @AfterClass:它会在所有的方法运行结束后被执行,static 修饰
  4. @Before:会在每一个测试方法被运行前执行一次
  5. @After:会在每一个测试方法运行后被执行一次
  6. @Ignore:所修饰的测试方法会被测试运行器忽略
  7. @RunWith:可以更改测试运行器 org.junit.runner.Runner

举个例子:

public class AnnotationTest {

    @Test(expected = ArithmeticException.class)
public void testDivide() {
assertEquals(3, new Calculate().divide(6, 0));
} @Test(timeout = 2000)
@Ignore
public void testWhile() {
while (true) {
System.out.println("run forever...");
}
} @Test(timeout = 3000)
public void testReadFile() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} }

5. Junit 测试套件的使用

测试套件就是组织测试类一起运行的。

步骤:
  1. 写一个作为测试套件的入口类,这个类里不包含其他的方法
  2. 更改测试运行器 Suite.class
  3. 将要测试的类作为数组传入到 Suite.SuiteClasses({})
例子:
@RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class, TaskTest2.class, TaskTest3.class})
public class SuiteClasses {
}

6. Junit 参数化设置

步骤
  1. 更多默认的测试运行器为 RunWith(Parameterized.class)
  2. 声明变量来存放预期值和结果值
  3. 声明一个返回值为 Collection 的公共静态方法,并使用 @Parameters 进行修饰
  4. 为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
例子

ParameterTest.java:

@RunWith(Parameterized.class)
public class ParameterTest { int expected = 0;
int input1 = 0;
int input2 = 0; @Parameterized.Parameters
public static Collection<Object[]> t() {
return Arrays.asList(new Object[][] {
{3, 1, 2},
{4, 2, 2}
});
} public ParameterTest(int expected, int input1, int input2) {
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
} @Test
public void add() {
assertEquals(expected, new Calculate().add(input1, input2));
}
}

Junit 学习笔记的更多相关文章

  1. junit学习笔记

    junit编程规范 测试方法上必须使用@Test进行修饰 测试方法必须使用public void 进行修饰,不能带任何的参数 新建一个源代码目录 测试类的包应该和被测试类保持一致 测试单元中的每个方法 ...

  2. junit学习笔记(二):hamcrest和TestSuit

    1. hamcrest hamcrest可以有效增加junit的测试能力,用一些对通俗语言来进行测试. Hamcrest 是一个测试的框架,它提供了一套通用的匹配符 Matcher,灵活使用这些匹配符 ...

  3. JUnit学习笔记-0-JUnit启动类

    [说明]:本文基于JUnit4.13版本代码,JDK1.8.0_151环境,使用工具为Eclipse,版本为Oxygen.1a Release (4.7.1a) [图示]: [正文]:JUnit4.1 ...

  4. Junit学习笔记之五:MockMVC

    原文:https://blog.csdn.net/xiao_xuwen/article/details/52890730 随着RESTful Web Service的流行,测试对外的Service是否 ...

  5. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  6. 积极主动敲代码,使用Junit学习Java程序设计

    积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...

  7. [原创]java WEB学习笔记109:Spring学习---spring中事物管理

    博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好 ...

  8. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. Android自动化学习笔记:编写MonkeyRunner脚本的几种方式

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. python 简化数据结构的初始化二 支持关键字参数

    1.例子 学自cookbook3

  2. android: requestLayout(), invalidate(), postInvalidate() 方法区别

    一.invalidate和postInvalidate 这两个方法都是在重绘当前控件的时候调用的.invalidate在UI线程中调用,postInvalidate在非UI线程中调用.因为androi ...

  3. SQL-W3School-函数:SQL LEN() 函数

    ylbtech-SQL-W3School-函数:SQL LEN() 函数 1.返回顶部 1. LEN() 函数 LEN 函数返回文本字段中值的长度. SQL LEN() 语法 SELECT LEN(c ...

  4. Android 摇一摇监听实现

    package com.loaderman.androiddemo; import android.content.Context; import android.hardware.Sensor; i ...

  5. ubuntu14.04 rabbitmq重启丢失用户信息

    一.rabbitmq数据是根据当前hostname作为node节点作为数据名保存 二.添加rabbimq用户sudo rabbitmqctl add_user tlwlmy tlwlmysudo ra ...

  6. smarty使用小技巧——截取小技巧

    smarty截取字符串(末尾没有...)今天发现有个网页出现乱码,检查发现是用truncate()函数截取的字符串,truncate()函数对中文支持不好,随用mb_substr()函数替换trunc ...

  7. myeclipse打开jsp后卡死的问题详解

    myeclipse打开jsp后卡死的问题详解   1,打开 Window -> Preferences -> General -> Editors -> File Associ ...

  8. JS微信网页使用图片预览(放大缩小)

    前言 需求在微信网页中客户点击图片可进行预览放大缩小功能,网上找了各种js方式实现, 唯一的麻烦就是不兼容或者和项目框架不兼容 次函数只只用于部分客户端,否则会出现 WeixinJSBridge is ...

  9. (十二)Centos之关机和重启

  10. sudo内容

    [root@bogon ~]# cat /etc/sudoers## Sudoers allows particular users to run various commands as## the ...