在工作中编写接口脚本中经常用到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:判断两个数组是否相等。
这里再补充两种扩展断言库: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")
@Test
public 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.其他接口规范在另写文章表述;