【原创】Selenium学习系列之(六)—Junit4中的注释和TestSuite

来源:互联网 发布:怎么推广app软件 编辑:程序博客网 时间:2024/05/19 05:03

上一篇中我们在Eclipse中用到了Junit4,我觉得对于不了解Junit的人,有必要加一章来专门说一下(其实我对Junit4也不是很了解,一边学习一边来写这篇的,不妥之处还请指正)。Junit4那么到底在哪儿用到了呢?script里哪些地方能体现出来呢?看完这一篇文章,相信你就能回答这两个问题啦。

Junit4

 

适用于Java的测试框架有多个,目前最流行的是Junit和TestNG.接下来我们聊一聊Junit。

JUnit test 是一个方法,它包含在一个只用于测试的类中,这样的类被称为测试类。Junit4是一个使用注解来识别测试方法的测试框架,在Junit4中我们使用注解@Test来声明一个测试。

在这个方法中,我们使用Junit或其他断言框架提供的assert方法来检查代码执行的预期结果和实际结果是否一致。

 

下面是我们常用的注解:

A、@Before 注解:与junit3.x中的setUp()方法功能一样,在每个测试方法之前执行;

B、@After 注解:与junit3.x中的tearDown()方法功能一样,在每个测试方法之后执行;

C、@BeforeClass 注解:在所有方法执行之前执行;

D、@AfterClass 注解:在所有方法执行之后执行;

E、@Test 注解:测试方法

G、@Ignore 注解:注释掉一个测试方法或一个类,被注释的方法或类,不会被执行。

 

看了A-G,是不是感觉很抽象很茫然,没有关系,我们通过下面的实例来说明,会有助于你的理解。

 

先创建一个简单的Java类,包含计算加法,减法和乘法三个方法。Junit中-测试类名一般都是以Test结尾,测试方法名义test开头。

DemoClass

然后创建这个Java类对应的测试类,分别测试这三个方法。

DemoTest_Part1

DemoTest_Part2

为了清楚的看到@BeforeClass@AfterClass@Before@After@Test如何执行,我们加入一些输出log。测试类执行成功后,输出的log如下。

PrintLog

怎么样,上面的实例是不是验证了A-E,并且我们可以再次总结如下

@BeforeClass:在所有测试开始之前运行,只会执行一次

@AfterClass:在所有测试开始之后运行,只会执行一次

@Before:在每个测试方法之前运行,即有几个@Test就会执行几遍

@After: 在每个测试方法之后运行,即有几个@Test就会执行几遍

@Test: 需要被执行的测试方法

 

 

接下来我们将测试类中的第一个测试方法testMethodAdd() 前@Test 改为@Ignore  ,然后再执行测试类,通过输出log发现被@Ignore的测试没有被执行,所以@Ignore的使用和功能一目了然了吧。

IgnoreScript

 

 

Junit test suites

如果有多个测试方法,可以将他们合并成一个测试套件(test suite),运行这个测试套件时会执行里面的所有测试方法,TestSuite还可以不断地嵌套其他的Testsuite。

测试过程中,有时可能想一次性运行所有的测试类,或是选择性的运行某些测试类。这样的话我们就可以用TestSuite来统一管理我们的测试类。

 

下面举例说明,比如我们我们测试中,用户管理功能包括创建角色,创建用户,修改角色,修改用户,那么我可以将这些操作拆分成颗粒度较小的多个case,这样提高script的复用性。

我们拆分为几个case的脚本,包括login,creteUser,updateUser,createRole,updateRole,logout。具体的脚本,大家可以参考loginTest去写,就不一一列举了,这刚好是个复习练习写脚本的机会哦。

比如我们有一个测试case是要测试updateUser这个操作,那么我们就可以选择性的组合脚本顺序为login-createRole-createUser-updateUser-logout,这样一个无任何依赖的全自动的updateUser c测试case就可以执行完成了。

 

怎么实现这样的组合呢,它就是Test suites。

 

package Test

import org.junit.runners.Suite;

import org.junit.runner.*;

import junit.framework.TestSuite;

import junit.framework.Test;

 

@RunWith(Suite.class)

@Suite.SuiteClasses({

Login.class,

addRole.class,

addUser.class,

updateUser.class,

Logout.class

})

 

public class AllUserMgtTest {

public static  Test  suite(){

TestSuite suite=new TestSuite();

return suite;

}

}

 

通过上面的介绍,对于上一章中的script 的@是不是不那么迷茫了,试着自己多写几个case,去体验一下所谓的test suite吧。

阅读全文
0 0
原创粉丝点击