美文网首页
JUNIT简单笔记

JUNIT简单笔记

作者: 汪之涛 | 来源:发表于2016-12-22 17:42 被阅读0次

JUNIT是JAVA的单元测试框架,官网在这里:http://junit.org,这里是官网的第一句话:

JUnit is a simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.

如果你曾经被迫写过"野路子"的测试用例,你就明白手动测试有多痛苦。

如果你曾经参加过ACM区域赛,接受过ACM的训练,那么代码中有这么两句话你一定记忆深刻:

freopen("in", "r", stdin);

freopen("out", "w", stdout);

不错,这就是一个ACM标准程序c代码的开头部分,意思是从文件名为"in"的文件输入,从文件名为"out"的文件输出,然后你写了一个shell脚本去检查你的out文件和你手动计算出来的正确值文件进行比较,从而找出有哪些用力挂了,算法到底哪里出错了。

在看到一个题目的time limt:1000ms 的时候,你就会关注算法复杂度,是n^2还是n*logn,这时候你就凭经验知道n^2的复杂度在n=2000时就到上限了。但是到底怎么测试呢?以我的经验,没啥办法,基本靠经验。

如果你真的做过这样的事情,你就能体会到过程的复杂,因为算法一般都有bug,测试会进行很多次,你不停的去运行shell脚本,打印错误的值,不停的在你c(java)代码与shell脚本和terminal之间切来切去。你没办法专注算法本身,最后你因为时间限制与银牌擦肩而过,最后发现XX公司在校招要求上赫赫然地写着"2. ACM区域赛银牌及以上。",多么痛的领悟!!!

现在,有了junit,你就可以在一个文件中简单的将你的测试写进去,运行,就可以看到程序的输出和你的预期结果有什么差别了。唉,学校里从来也没人提过这种东西啊,早知道伤心总是难免的,我又何苦对ACM一往情深。

下面我们就来看看junit到底是怎么回事。

我们先写一个简单的加减乘除类:

图1

接下来我们编写这个类的测试类进行测试,需要注意的内容已经在代码的注视中写清楚了。

图2

可以看到我们的测试通过了:

图3

如果测试失败呢,比如我们3*3 = 9,但是我们在程序里不小心写成了a*b+1,于是返回10,那么junit就会给我们反馈:

图4

你看,我们跑了4个测试,有一个失败了,图4下半部分中写到java.lang.AssertionError: expected:<9> but was:<10>

在testMultiply这个方法中,我们期望的正确值是9,但是程序返回值是10.

那juint是怎么工作的呢?我们看下下面这个:

图5

运行结果如下:

图6

具体的解释可以看图5的注释,可以看到juint给了你很多自由发挥的空间。比如我们要测试spring程序,需要先加载ApplicationContext.xml文件,这时候你就可以在setUpBeforeClass中加载这个配置文件。

然后我告诉你,其实@Test注解还可以传参数,比如你知道测试里有一个bug,除数在某种情况下可能为0,但是你不想让这种情况影响测试正常地进行,这时候就可以这样:

图7

expected=ArithmeticException.class会捕捉除数为0这个异常,这个测试会安全通过。

下面就是常用的两个维度上的"一起运行":

如果有很多类需要测试,你写了很多测试类,那么是不是要一个一个的运行这些测试类?是不是希望有这么一个方法能一下运行很多不同的测试类:

图8

那如果一个类有很多测试数据呢,想想ACM你想被accept一次,你的代码需要接受100M的测试用例,这么多怎么办?

图9

怎么样?junit是不是很方便呢?

相关文章

  • JUNIT简单笔记

    JUNIT是JAVA的单元测试框架,官网在这里:http://junit.org,这里是官网的第一句话: JUni...

  • Junit4 源码分析(本文只是汇总链接)

    链接 Junit源码阅读笔记一(从JunitCore开始) Junit源码阅读笔记二(Runner构建) Juni...

  • SpringBoot Junit 单元测试无法加载src/mai

    SpringBoot 集成Junit比较简单,首先在pom.xml 中增加Junit 的maven 依赖 然后, ...

  • Junit基本使用

    用Junit做单元测试非常简单。 1.最近的junit依赖地址,也可以引入环境自带的Junit4的依赖包。 2.通...

  • Junit简单示例

    编写类文件Calculator 测试类文件CalculatorTest

  • Spring boot 编写单元测试的流程

    编写单元测试,需要用到Junit,spring 集成了Junit的工具包,因此,测试变得比较简单。一个简单的测试程...

  • Android测试系列-JUnit(一)

    目录 简介 Android下的JUnit 环境搭建 简单测试 简介 JUnit 是一个 Java 编程语言的单元测...

  • Junit学习笔记

    1.JUnit - 基本用法 使用原因:测试就是检验实际输出是否符合预期。只有经过验证的代码才能上生产。通过单元测...

  • Junit 学习笔记

    [TOC] Junit 学习笔记 1. 编写测试用例时需要注意 测试方法上必须使用 @Test 进行修饰 测试方法...

  • Junit的简单使用

    Junit上次写Appium的时候说到过,Juint是由java语言编写的一个框架,既然是框架了,说明有些东西就已...

网友评论

      本文标题:JUNIT简单笔记

      本文链接:https://www.haomeiwen.com/subject/oikhvttx.html