一、什么是Junit
Junit即单元测试,是JAVA语言的单元测试框架,是对程序的一个方法所进行的测试
通常都是由程序员本身经过Junit来进行测试,所以单元测试也叫程序员测试;
若是测试人员熟悉程序员的代码逻辑也能够进行接口测试,可用于进行接口测试,即白盒测试。
二、如何使用Junit
要使用Junit测试框架,必需要在maven项目的基础上才能使用,所以这里先对maven进行介绍。
★maven介绍
1)是一种特殊的JAVA project,经过maven建立后的项目上面会有一个M字样的标志,以下图所示。
2)在maven中集成了junit测试包,应该说maven能够集成任何你想的到或者想不到工具插件。
3)优点:若是不是maven项目,若是使用到某个JAR包,就须要手动就添加,但经过maven建立的项目就不须要。
4)做用:可进行编译,打包,也能够进行模块管理
★如何建立maven项目
第一步:
在eclipse中点击new->other来建立一个maven项目
第二步:
在打开的的对话框中选择Maven Project,而后点击下一步
第三步:
勾选create a simple project,而后再点击next
注意:
第一次使用maven时须要下载,若是速度慢须要等待很长一段时间
第四步:
在new maven project中填写group id ,artifact id(文件夹名字),其它默认或者不填,而后finish
group id与artifact id解释以下:
groupid和artifactId被统称为“坐标”是为了保证项目惟一性而提出的,若是你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
groupId通常分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(由于tomcat是非营利项目),公司名称是apache,artigactId是项目名称即tomcat。
第 五步:
按以上步骤便可完成maven项目的建立了。
如下为所建立的maven项目即test_junit各个文件夹的解释:
1)src/main/java:存放JAVA代码
2)src/main/resources:存放JAVA的资源文件
3)src/test/java:存放测试的JAVA代码
4)src/test/resources:存放测试JAVA代码须要用到的一些资源文件
5)pox.xml:用于描述maven项目的一些相关信息,好比:建立的test_junit的版本信息,Group Id,包的结构等等,均可以在pox.xml中查看到。
第六步:
如何经过maven引入须要用到的junit的jar包。
1)打开pox.xml文件,选择pox.xml标签
2)而后在pox.xml中输入如下代码,来引入相关的junit的JAR包,代码以下:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
注意:
这段代码的意思是从中央仓库拿到代码后放到本地仓库中。
中央仓库的地址为:
mvnrepository.com/artifact/org.hamcrest/hamcrest-core/1.3
本地仓库查看方法:
windows->preferuserences->maven->user settings
而后保存后,从新打开test_junit项目,就能够看到maven dependeccies,即所引入的jar包。
三、如何进行单元测试
一共有二种方法,分别以下:
方法一:
经过继承类TestCase,测试方法必须以test开头来命名
例如:
public class Demo1 extends TestCase{
public void test1(){
...
}
}
注意:这种方法中写的全部的方法都必须是以test开头,例如:testXXXX
执行上面的代码后会在左边显示出这两个测试方法是否执行成功。绿色表明执行成功,红色表明执行失败,且test1跟test2方法上面的会显示X。
方法二:
须要在测试方法前面加入注解,而注解的类型分别以下:
@Test:代表这是一个测试方法
@Before:每执行一个测试方法前都会先执行被标注了此注解的方法
@After:每执行一个测试方法后都会先执行被标注了此注解的方法
@BeforeClass:测试用例初始化时执行被@BeforeClass标注的方法,只会执行一次
@AfterClass:当全部测试执行完毕以后,执行进行收尾工做,也就是执行被@AfterClass标注的方法,只会执行一次
格式:
@Test
public void method1(){
...
}
注意:
此时方法名能够随便写,不用必定要写成testXXX了。
例如:
public class Demo2 {
@BeforeClass
public static void method5(){
System.out.println("Demo2.method5()");
}
@Before
public void method3(){
System.out.println("Demo2.method3()");
}
@Test
public void method1(){
System.out.println("Demo2.method1()");
}
@Test
public void method2(){
System.out.println("Demo2.method2()");
}
@After
public void method4(){
System.out.println("Demo2.method4()");
}
@AfterClass
public static void method6(){
System.out.println("Demo2.method6()");
}
}
执行后的结果以下:
注意:
@BeforeClass与@AfterClass所标注的测试方法要定义成static类型才能被执行
四、断言(Assert)
单元测试必需要用到断言,被用来检查非法状况而不是错误状况,即在该程序正常工做时毫不应该发生的非法状况,用来帮助开发人员对问题的快速定位。
经常使用的API以下:
assertEquals(a,b):判断两个数据是否一致
assertNotEquals(a,b):判断两个数据是否不一致;
assertNull(object):查看对象是否为空
assertNotNull(object):查看对象是否不为空;
assertTrue(...):判断当前运行结果是否为真;
assertFalse(...):判断当前运行结果是否为假;
例如:
assertEquals(3, caculator.getResult());
用于判断经过计算器计算的是否正确
五、打包类测试
介绍:
打包类测试,是把全部的测试类打包在一块儿测试,即在测试方法前引入全部的测试类便可。
优势:
能够一次性的测试全部的方法,而不用一个一个的去跑了。
代码格式以下:
@RunWith(Suite.class)
@Suite.SutieClasses({类1,类2,类3,...})
public class JunitTestAll {
}
例如:
六、断言与异常的区别
断言用在那些你知道绝对不会发生的事情上,可是由于人老是会犯错误,保不许你写出来的东西跟你想的不同。因此assert用来捕捉的是程序员本身的错误。
但异常(exception)主要用于捕捉的是用户或者环境的错误。