对JavaScript进行单元测试的工具(4)

发表于:2012-11-29来源:IBM作者:不详点击数: 标签:JavaScript
清单 15 显示了如何使用几个参数配置控制台。该控制台会在 DOM 元素内部呈现,其 id 为 testLogger。 需要更新 HTML 运行程序。添加该控制台所引用的 DOM 元素

  清单 15 显示了如何使用几个参数配置控制台。该控制台会在 DOM 元素内部呈现,其 id 为 testLogger。

  需要更新 HTML 运行程序。添加该控制台所引用的 DOM 元素,如清单 16 所示。

  清单 16. 更新后的 HTML 运行程序支持 Yahoo!Console

				
<body class="yui3-skin-sam">
     <div id="testLogger"></div> 
</body>

  本例为 设置了一个类,名为 yui3-skin-sam。该类负责定义控制台的皮肤。

  图 3 显示了运行测试之后的控制台。

  图 3. YUI Test 结果

显示每次测试结果的日志控制台的屏幕截图。

  回页首

  使用 JSTestDriver 轻松测试

  通过使用功能强大的 JSTestDriver (JSTD) 工具,您能够在多个浏览器中从命令行运行 JavaScript。JSTD 带有一个 JAR 文件,它可以让您启动服务器、捕获一或多个浏览器并在这些浏览器中运行测试。因为拥有上述的两个框架,您不需要 HTML 运行程序,但您需要一个配置文件。图 17 显示了配置文件。

  清单 17. 配置文件 (jsTestDriver.conf)

				
server: http://localhost:4224
load:
  - js/src/*.js
test:
  - js/test/*.js

  该配置文件是用 YAML 编写的,这是一种很好的配置文件格式。它包含了要启动的服务器以及源代码和测试文件的位置信息。

  要使用 JSTD 来执行测试:

  启动测试服务器。从命令行中,进入到保存 jsTestDriver.jar 的文件夹,并执行以下命令:

java -jar JsTestDriver-1.3.3d.jar -port 4224

  清单 17 中指定的端口应该与配置文件中指定的一样。在默认情况下,JSTD 会在 JAR 文件所在的同一个目录下查找 jsTestDriver.conf 文件。

  在测试中,通过将 URL http://localhost:4224/capture 复制粘贴到测试中的浏览器,在服务器上注册一个或多个浏览器。

  测试之前示例中所使用的相同代码(清单 5),但这次使用 JSTD 语法。清单 18 显示了如何转换 清单 10 的 QUnit 和 清单14 的 YUI Test 中的代码。

  清单 18. JSTD 测试

				
TestCase("Temperature conversion", {
    setUp : function () {
        this.celsius1 = 20;
        this.celsius2 = 30;
	
        this.fahrenheit1 = 68;
        this.fahrenheit2 = 86;
    },

    testConversionCtoF: function () {
        assertSame(this.fahrenheit1, convertFromCelsiusToFahrenheit(this.celsius1));
        assertSame(this.fahrenheit2, convertFromCelsiusToFahrenheit(this.celsius2));
    },
	
    testConversionFtoC: function () {
        assertSame(this.celsius1, convertFromFahrenheitToCelsius(this.fahrenheit1));
        assertSame(this.celsius2, convertFromFahrenheitToCelsius(this.fahrenheit2));
    }
});

  清单 18 中的代码与 YUI 版本差别不大。JSTD 使用 TestCase() 函数来定义测试用例。您可以使用内联声明来定义测试方法,如清单 18 所示,或者可以扩展 TestCase 实例的原型。每个测试用例还可以使用 SetUp() 和 tearDown() 方法。

  如果要运行测试,运行以下命令:

java -jar JsTestDriver-1.3.3d.jar --tests all

  图 4 显示了终端上的输出结果。

  图 4. JSTD 测试的结果

命令行显示哪些测试通过,哪些测试失败。

  测试会传入之前捕获到的所有浏览器(Chrome 15、Safari 5 和 Firefox 7)。

  JSTD 还能与您偏好的连续集成系统很好地集成,成为连续版本的一部分。它还能与 IDE 集成,如 Eclipse(插件)或 TextMate(包)。

  回页首

  结束语

  随着现在对 Web 应用程序客户端的关注,对 JavaScript 进行单元测试就显得尤为必要。有很多框架可以帮助您完成此任务,本文介绍了三个最流行的框架:QUnit、YUI Test 和 JSTestDriver。

  QUnit 非常简单,很适合初学者的框架。

  YUI Test 是个全面的工具,适合熟悉 YUI 库的用户。

  JSTestDriver 可在多个浏览器中运行测试。

原文转自:http://www.ltesting.net