自动化单元测试

发布时间:2020-06-14 17:40:29 作者:博文视点
来源:网络 阅读:220

自动化单元测试

人们在使用“单元测试”这个术语时比较随意。这可能会导致困惑,特别是当人们开始声称他们的单元测试“花了很长的时间执行”时。为开发者测试定义一个常用词汇表有助于将测试进行有效的分类,从而创建一个有效的CI系统,能够执行快速的构建。

“单元测试”验证软件系统中所有小元素的行为,这些小元素通常都是一个类。但是有时候,单元测试和被测试的类之间的这种一对一的关系会被放大,因为一些被测试的类耦合程度较高。

代码清单6-1展示了利用TestNG框架编写的单元测试。TestNG是基于annotation的,因此@testng.test这样Javadoc一样的注释出现在了startPatternTest方法中。通过Java1.4assert语句,这个测试用例验证了RegexPackageFilter类通过一个正则表达式模式正确地过滤了字符串。

代码清单6-1  使用TestNG的隔离单元测试

public class RegexPackageFilterTestNG {

    /**

     * @testng.test

     */

    public void starPatternTest() throws Exception{

 

        Filter filter = new RegexPackageFilter("java.lang.*");

 

        assert filter.applyFilter("java.lang.String"):

            "filter returned false";

 

        assert !filter.applyFilter("org.junit.TestCase"):

            "filter returned true for org.junit.TestCase";

    }

}

某些单元测试需要较少的外部依赖关系,这些依赖关系通常是其他的类。这些依赖的类本身比较简单,没有很复杂的类间关系。有时候,单元测试甚至使用模拟对象(mock),它们是一些简单的对象,用于替换真实的、复杂的对象。如果依赖的对象本身确实依赖于外部的实体,如一个文件系统或数据库,而这些外部对象又没有虚拟化,测试就变成了组件测试(后面定义)。

代码清单6-2展示了一个用Ruby写的单元测试的例子,它验证了一个过滤器的行为。这个测试仍然是一个单元测试,虽然它使用了两个类,RegexFilterSimpleFilter,因为它只使用了一个类型来验证行为。

代码清单6-2  使用Ruby的隔离单元测试

require "test/unit"

require "filters"

 

class FiltersTest < Test::Unit::TestCase

 

  def test_regex

    fltr = RegexFilter.new(/Google|Amazon/)

    assert(fltr.apply_filter("Google"))

  end

 

  def test_simple

    fltr = SimpleFilter.new("oo")

    assert(fltr.apply_filter("google"))

  end

 

  def test_filters

    fltrs = [SimpleFilter.new("oo"), RegexFilter.new(/Go+gle/)]

    fltrs.each{ | fltr |

        assert(fltr.apply_filter("I love to Gooogle on the Internet"))

    }

  end

end

单元测试的关键在于没有外部的依赖关系,如数据库。这些外部的依赖关系通常会使测试建立和执行的时间变长。单元测试可以在开发周期的早期创建并执行(例如第一天)。因为编码和看到单元测试结果之间的时间很短,所以单元测试是一种有效的除错方法。

 

自动化单元测试

图书详细信息:http://bvbroadview.blog.51cto.com/addblog.php

本文节选自《持续集成:软件质量改进和风险降低之道》一书

[]Paul M. Duvall (保罗.M. 杜瓦尔)Steve Matyas (史蒂夫.迈耶斯) Andrew Glover(安德鲁.格洛弗

王海鹏 

电子工业出版社出版

 

推荐阅读:
  1. Python 单元测试(unittest)
  2. android基础知识12:android自动化测试06—Instrumentation 02 单元测试

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

软件工程

上一篇:CentOS 编译安装gcc 4.8 为了支持C++11新特性

下一篇:实战Spring4+ActiveMQ整合实现消息队列(生产者+消费者)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》