[Android测试] AS+Appium+Java+Win 自动化测试之四: 单元测试框架和TestNg

一、 单元测试框架

单元测试是 开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为

我们之前的测试添加联系人脚本就是用默认的JUNIT 单元测试框架,实现注解的方式执行case用例。

每个方法上面的 @XXXXX 就是注解,我们需要知道的就是:带了注解的方法将会在某个时机运行,注解具体内容请百度一下。

package com.example;

import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterGroups;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;

import java.io.IOException;
import java.net.MalformedURLException;

/**
 * Created by LITP on 2016/9/21.
 */

public class Test  {

    @BeforeMethod
    public void BeforeMethod() throws IOException {

    }

    @BeforeClass
    public void beforeClass() {
    }


    @BeforeGroups
    public void beforeGroups() {

    }


    @BeforeSuite
    public void beforeSuite() throws MalformedURLException {

    }


    @BeforeTest
    public void beforeTest() {


    }


    @AfterMethod
    public void afterMethod() {

    }

    @AfterClass
    public void afterClass() {

    }

    @AfterGroups
    public void afterGroups() {

    }

    @AfterSuite
    public void afterSuite() {

    }

    @AfterTest
    public void afterTest() {

    }
}

1. Junit:

JUnit是Java单元测试框架,从Junit4开始,通过注解的方式来识别测试方法,我们的Junit4在导入的selenium-server-standalone-3.0.0-beta3 这个包里面。目前支持的主要注解有:

注解说明
@BeforeClass全局只会执行一次,而且是第一个运行
@Before在测试方法运行之前运行
@Test测试方法
@After在测试方法运行之后允许
@AfterClass全局只会执行一次,而且是最后一个运行
@Ignore忽略此方法

例如我们上一章导入的源码就有Test、Before、After

2.Testng:

它的目的就是是优于JUnit,消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试。

特点:

  • 灵活的插件API
  • 支持多线程测试
  • 灵活的运行时配置
  • 使用Java和面向对象的功能
  • 独立的编译时间测试代码运行时配置/数据信息
  • 支持依赖测试方法,并行测试,负载测试,局部故障
  • 支持综合类测试(如: 默认情况下,没有必要创建一个新的测试每个测试方法的类的实例)
  • 测试组。当编译测试,只要问TestNG运行所有的“前端”的测试,或“快”,“慢”,“数据库”等

官网文档地址: http://testng.org/doc/documentation-main.html

注解有:

注解解析
@BeforeSuite注解的方法将只运行一次,运行在此套件中的所有测试之前。
@AfterSuite注解的方法将只运行一次,运行在此套件中的所有测试之后。
@BeforeClass注解的方法将只运行一次,运行在该class运行之前。
@AfterClass注解的方法将只运行一次,运行在该class之后。
@BeforeTestclass的标签之前被运行。
@AfterTestclass的标签之后被运行。
@BeforeGroups组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。
@AfterGroups组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。
@BeforeMethod注解的方法将每个测试方法之前运行。
@AfterMethod被注释的方法将被运行后,每个测试方法。
@DataProvider标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[][],其中每个对象[]的测试方法的参数列表中可以分配。该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Factory作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
@Listeners定义一个测试类的监听器。
@Parameters将参数传递给@Test方法。
@Test标记一个类或方法作为测试的一部分。

PS: 设置程序信息一般放在BeforeClass或者BeforeSuite里面,不要放BeforeMethod里,为什么呢,如果有时候不止一个测试方法,放BeforeMethod里面就会导致调用多次,就会报错了。还有你要并行测试的话,设置信息一定得放在BeforeClass,不然就会导致只初始化一次,就会只有一台手机测试 。所以,初始化放在BeforeClass是最安全的,(例如我第十篇文章并行那里有讲到)。

二、 Testng和Junit的简单对比

  1. testng底层调用junit

  2. 历史上曾有testng优于junit的一段时期,但随后junit已更新并追赶上来

  3. testng的data provider使用较方便

  4. testng能做的事情junit都能做,但是有的地方会比较麻烦

三、 使用Testng

开始就用了,根本停不下来,就不用junit,先看看本来使用的单元 测试框架,看看导包就知道了

这里写图片描述

1.下载Testng

Android studio 添加依赖即可 ,在gradle的dependencies下面添加
(当前最新是6.9.6)

compile 'org.testng:testng:6.9.6'

这里写图片描述

2.添加Testng插件

AndroidStudio已经默认添加了,在File-Setting-Plugins 搜索即可看到
这里写图片描述

3.使用Testng

新建一个测试类,新建方法,在方法上面添加注解即可。例如文章开头的代码。

这里写图片描述

4.运行Testng

在测试的module的根目录下新建testng.xml, 名字随你,内容正常即可。详细的内容配置可以看官网: http://testng.org/doc/documentation-main.html#testng-xml

这里写图片描述

右键,运行即可

这里写图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KeepStudya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值