Qunit前端单元测试(五)

来源:luqidong 发布时间:2013-11-04 20:41:31 点击数:

3.2.6 测试分组

保证测试具有原子性并且不受干扰,但有时又需要进行逻辑组织并且运行特定的逻辑块中的测试。

使用module()方法可以对代码进行逻辑组织。module()方法之后的测试都属于这个模块下,在测试结果中,这些测试的测试名前面会增加模块名,可以通过模块名来选择这个模块下的测试运行。

 78OA办公系统

module()除了进行模块划分的作用还可以为模块中的测试添加通用的处理,module()方法的第2个参数用来定义这个模块中每个测试运行前后的执行函数.

78OA办公系统 

3.2.7 高效的开发

如果测试需要花费很长的时间运行,就需要避免花费大量的时间在等测试运行上。

QUnit提供功能来达到这个目标。有些甚至仅仅需要点击一下激活就好。选中顶部的“Hide passed tests”选择框,QUnit只会显示失败了的测试,这个虽然不会对执行速度产生影响,但是可以非常方便的看到失败了的测试。

QUnit还提供一个非常有意义的功能,这个功能默认是开启的并且很明显。就当测试失败时,QUnit会把测试的名字存储在sessionStorge中,下次再运行时,这些失败了的测试会优先执行,但是不会对输出结果的顺序产生影响,仅仅是执行顺序改变而已。通过和“Hide passed tests”选择框结合使用,只要测试还失败,就可以立马看到。

前面提到的自动重排序默认是开启的,但是它会影响到需要保证原子性的测试。如果测试没有保证原子性,将会看到随机的不确定的错误。正确的做法就是进行修正,如果需要这么做,就设置QUnit.config.reorder = false

除了自动重排序,还有一些手工配置的选项可用。通过点击测试后面的“return”链接可以重新运行任何一个测试。这会在请求字符串上添加"testNumber=N"参数,这里N是被点击的测试的编号。点击之后会重新加载页面并且只运行点击的测试,可以用浏览器的后退按钮返回运行所有的测试。

同样,通过右上角的下拉框来选择模块下的测试运行也是一个很好的方式。这会在请求字符串上添加"module=N"参数,这里N是编号后的模块名例如:"?module=testEnvironment%20with%20object"

未完待续 www.78oa.com 免费oa系统提供