单元测试框架-Junit介绍

来源:互联网 发布:java常用api总结 编辑:程序博客网 时间:2024/05/16 17:31

在工作中编写接口脚本中经常用到junit作为测试框架,下面总结一下junit的用法和编写规范,供大家参考。

junit简介:

基于Java语言的单元测试框架,在日常工作中被广泛运用于单元测试和接口测试。

junit官网:http://junit.org/junit4/

maven引入依赖,我用的是junit4:

<dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.9</version></dependency>

Junit用法介绍(这里只介绍本人接口测试工作中最常用的,其余用法上官网查询):

Junit生命周期:

@BeforeClass:针对当前测试类中的所有测试方法,只执行一次,且必须为static void。比如你的测试用例执行前需要一些高开销的资源(连接数据库)可以用@BeforeClass搞定。值得注意的是如果测试用例类的父类中也存在@BeforeClass修饰的方法,它将在子类的@BeforeClass之前执行。
@AfterClass:同样修饰static的方法,在整个类执行结束前执行一次。如果你用@BeforeClass创建了一些资源现在是时候释放它们了。
@Before:修饰public void的方法,在每个测试用例(方法)执行时都会执行。
@After:修饰public void的方法,在每个测试用例执行结束后执行。
执行顺序:@BeforeClass>@Before>@Test>@After>@AfterClass

常用断言:

Junit自带Assert类:
import org.junit.Assert;
之后就可以用以下方法进行断言。
AssertTrue、AssertFalse:定义结果的true、false。
AssertThat:使用Matcher做自定义的校验。
AssertEquals、AssertNotEquals:判断两个对象是否相等。
AssertNull、AssertNotNull:判断对象是否为空。
AssertSame:判断两个对象是否为同一个,不同于equals这里是使用“==”判断。
AssertArrayEquals:判断两个数组是否相等。
Assert断言

这里再补充两种扩展断言库:Hamcrest,AssertJ(自行了解)

测试组件:

Junit4中通过注解来实现了测试组件,意为:可以运行指定测试的几个类,举例:

// 指定运行器@RunWith(Suite.class)// 指定运行AcceptTest和AcceptAllTest类中的所有测试方法@Suite.SuiteClasses({AcceptTest.class, AcceptAllTest.class})public class SuitTest {

异常处理:

Junit还提供了一些注解来处理异常的情况,如:
1.忽略运行测试方法(@Ignore),标注忽略运行的原因:
例:

@Ignore("Test is ignored as a demonstration")@Testpublic void testSame() {    assertThat(1, is(1));}

2.超时时间(@Test(timeout = xxx)),一个用例运行超过xxx时间会自动失败,单位为毫秒。
3.测试异常,如果运行测试方法后,测试方法没有抛出异常,那么这个测试方法就不能通过。
例:

public class SuitTest {    private SupplyInfo supplyInfo;    @Test(expected = NullPointerException.class)    /*    supplyInfo未赋值,假设我要验证这个用例会抛出空指针,不定义expected = NullPointerException.class时这个用例会抛出异常,定义后这个用例就执行通过,验证通过*    */    public void test() throws Exception {        supplyInfo.setIsItemEmploy(0);  Assert.assertEquals("0",supplyInfo.getIsItemEmploy().toString());    }}

Junit接口测试编写规范:

1.测试类访问权限是public、返回值是void,没有传参;
2.测试类以被测方法+Test结尾;
3.测试方法以test_N(E)校验点预期结果命名,N代表正常场景用例,E代表异常场景用例;(针对接口测试)
4.其他接口规范在另写文章表述;

0 0