2017JUnit(java单元测试工具)2017.11.20介绍目标1.了解java单元测试基本概念2.掌握使用JUnit进行单元测试的方法3.掌握JUnit的常用工具什么是单元测试我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数的其他功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情。所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测试我们称之为单元测试。•用更加通俗的话来描述单元测试就是:写了个类,要给别人用,会不会有bug?怎么办?测试一下。用main方法测试好不好?这种方法我们经常用,就是写一个方法实现一些功能,把方法的调用方式放在main函数中。这样的测试方式一个是使得main函数太过于混乱,再者测试过程需要人的仔细观察来辨别每个函数的功能实现,哪一个函数出错了,哪一个函数没有输出之类的问题层出不穷,单元测试就是来解决这些问题的。JUnit4详解•JUnit是一个用于编写可复用测试集的简单框架,他是XUnit的一个子集。•Xunit是一套基于测试驱动开发的测试框架–PythonUnit–CppUnit–Junit•本次,我们将通过一个运算模块的单元测试案例介绍JUnit的使用。JUnit4的安装•Junit的下载地址用我们编写的Test类进行测试概述•1.测试方法上使用@Test进行修饰•2.测设方法必须使用publicvoid修饰,不能带任何的参数•3.新建一个源代码目录来放我们的测试代码•4.测试类的包应该和被测试的类保持一致•5.测试单元中的每个方法必须可以独立测试,测试方法中不能有依赖•6.测试类使用Test作为类名的后缀,测试方法用test作为方法名的前缀(不是必须)测试失败的两种情况1.Failure一般由单元测试是用的断言方法判断失败所引起的,也就是说程序输出的结果和我们预期的不一样2.error是由代码异常引起的,他可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bugJunit4的运行流程•1.@BeforeClass修饰的方法会在所有的方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它,在内存中它只会存在一份实例,它比较适合加载只需加载一次的文件,如:配置文件。•2.@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的链接•3.@Before和@After会在每个测试方法的前后各执行一次junit常用注解•1.@BeforClass:他会在所有的方法运行前被执行,static修饰•2.@AfterClass:它会在所有的方法运行结束后被执行,static修饰•3.@Before:会在每一个测试方法被执行前执行一次•4.@After:会在每一个测试方法运行后被执行一次junit常用注解•5.@Test:将一个普通的方法修饰成为一个测试方法–@Test(expected=XX.class)–@Test(timeout=毫秒)6.@Ignore:所修饰的测试方法会被测试运行期忽略7.@RunWith:可以更改测试运行器org.junit.runner.Runnerjunit4的测试套件•1.测试套件的类必须是个空类,而且用public修饰•2.更改测试运行器Suite.class•3.将要测试的类作为数组传入到Suite.SuiteClasses({})中参数化测试•1.更改默认的测试运行器为Runwith(Parameterized.class)•2.声明变量来存放预期值和结果值•3.声明一个返回值为Collection的公共静态方法,并使用@Parameters进行修饰•4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值总结•1.什么是单元测试•2.介绍JUnit4的使用•3.运行成功,运行失败的情况•4.JUnit4的运行流程•5.Junit4的常用注解•6.JUnit4的运行套件SuiteTest•7.JUnit4的参数化测试ParameterTest感谢大家的收听!