`
kgd924
  • 浏览: 43839 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

js的unit test实现(一)

阅读更多

不知道有多少人会写js的unit test, 不过最近的项目对unittest要求比较严格.所以也养成了写unittest的习惯. 在搞js-shell时, 对写的代码没有做test,总是不放心. 找了一些资料看到JQuery的unit test方法不错. 学习了一下也在js-shell加入了Uinttest库. 总算把前面的代码都加上了UT才放心.

js-shell中的unittest的使用方法和概念都和junit差不多, 主要有TestRunner, TestResult, TestSuite, TestCaseContext几个对象. 下面是一个例子:

1. 先实现一个test runner, 创建run_unit_test.js 这是必须的步骤,不过内容很简单:

var ut = __import__('UnitTest', null, {})  //导入Unitest 库

ut.run_suite('.')  //运行Testsuite,  将运行当前目录下的所有以'test_'开头的js文件作为unittest运行.

 

2. 实现一个unitest, 创建test_hellotest.js

 

test("assertEqual", function() {   //一个unittest, 名称为"assertEqual", function为 test的内容.
    assertEqual(10+ 20, 30)      //一个比较断言,,
});

test("assertEqual fail no message", function() {  //一个失败的 unitest 例子.
    assertEqual(10+ 20, 31)
});

test("assertEqual fail with message", function() {
    assertEqual(10+ 20, 31, "10+20 != 31")
});

test("assertRaises expect raised", function() {  //测试一个将要抛出异常的方法.
    assertRaises('Stop', function(m){throw m}, 'Stop')
});


test("assertRaises mismatch raised", function() {
    assertRaises('Stop', function(m){throw m}, 'Start')
});

test({                      //实现一个Unittest对象, 包含setUp, tearDown.
    setUp: function(){        //一个setUp, 在每个test方法调用之前调用.
        this.msg = "enter setUp";
        info('enter setUp');   //在Test中输出消息.
    },
    
    test_basic_requirements: function(){  //一个方法内的test, 方法名必须以"test_"开头
        info('running test_basic_requirements');
        assertEqual(this.msg, "enter setUp")
        this.msg = 'test_basic_requirements'
    },
    
    test_setUp_called_for_every_functional: function(){
        info('test_setUp_called_for_every_functional');
        assertEqual(this.msg, "enter setUp")
        this.msg = 'test_setUp_called_for_every_functional'
    },   
    
    tearDown: function(){    //在每个test调用用调用.
        this.msg = "enter tearDown";
        info('enter tearDown');
    },
    
});

 3. 运行unit test

 

C:\utest>js run_unit_test.js
[INFO]:Start test file:C:\utest\test_hellotest.js
assertEqual...PASS in 0ms
assertEqual fail no message...FAIL in 16ms
        expected: 31, actual: 30
assertEqual fail with message...FAIL in 0ms
        10+20 != 31
assertRaises expect raised...PASS in 0ms
assertRaises mismatch raised...FAIL in 0ms
        expected exception:Stop, catched:Start
[INFO]test_setUp_called_for_every_functional:enter setUp
[INFO]test_setUp_called_for_every_functional:test_setUp_called_for_every_functio
nal
[INFO]test_setUp_called_for_every_functional:enter tearDown
test_setUp_called_for_every_functional...PASS in 31ms
[INFO]test_basic_requirements:enter setUp
[INFO]test_basic_requirements:running test_basic_requirements
[INFO]test_basic_requirements:enter tearDown
test_basic_requirements...PASS in 16ms
-----------------------------------------------------------
Ran 7 tests in 63ms
FAILED! Pass:4, Failed:3

 

这是一个简单的Unit, test. 测试的输出和UnitTest中的断言方法都可以自定义. 下次将介绍如何定义assert方法.

 

分享到:
评论
2 楼 kgd924 2008-09-06  
js-shell项目中现在还没有考虑UI部分.现在的代码都是在浏览器外运行的. 非要实现UI也是swing,而不是html.

UI部分的测试可以用Browser库试试解析DOM, 不过Browser都没有测试过,不知道能用不.
1 楼 kimmking 2008-09-06  
。。。

UI部分怎么test?

相关推荐

    Jsmaine for unit test JavaScript

    "Jsmaine for unit test JavaScript"指的是利用Jasmine来对JavaScript代码进行单元测试的实践。 Jasmine的核心理念是提供一个简洁、易于理解和使用的API,使得开发者可以快速地为他们的JavaScript代码编写测试用例...

    modeshape-unit-test-3.1.2.Final.zip

    【标题】"modeshape-unit-test-3.1.2.Final.zip" 提供的是ModeShape项目的单元测试组件的3.1.2.Final版本。ModeShape是一个开源的、灵活的、可嵌入的、高性能的元数据存储和图形库,支持JCR(Java Content ...

    UNit_Test单元测试课件

    "UNit_Test单元测试课件"显然是一份详细讲解单元测试的资料,旨在帮助开发者理解和掌握这一关键技能。单元测试是针对软件中的最小可测试单元进行检查和验证,这些单元通常是一个函数、方法或类。它的目标是确保每个...

    springboot-reactjs-fullstack:使用Srping Boot和React js(React Hooks,Functional Programming,Spring Boot RESTful API,WEBPACK,BABEL JPA UNIT TEST和JEST TEST RUNNER)创建一个全栈应用程序

    springboot-reactjs-fullstack ...使用Srping Boot和React js(React Hooks,Functional Programming,Spring Boot RESTful API,WEBPACK,BABEL JPA UNIT TEST和JEST TEST RUNNER)创建一个全栈应用程序

    js-unit-test-demo:一个演示用Javascript进行单元测试的项目

    `js-unit-test-demo` 是一个专为演示如何在JavaScript项目中进行单元测试而创建的项目。这个项目的目标是帮助开发者理解单元测试的概念、工具以及最佳实践。 在JavaScript中,单元测试通常通过专门的测试框架来实现...

    JavaScript Unit Testing(PACKT,2013)

    Cover the most popular JavaScript Unit Testing Frameworks including Jasmine, YUITest, QUnit, and JsTestDriver. Automate and integrate your JavaScript Unit Testing for ease and efficiency.

    ng-unit-test

    我试图使业力测试运行并遇到一些问题: 我必须在myServiceMock模块的syncCall方法中添加一个return语句。 我对指令的测试根本没有运行:我总是收到错误消息“意外的请求:GET ../templates/pablo-my-directive.html...

    JavascriptUnitTesting.pdf 英文原版

    Javascript Unit Testing

    deferred-unit-test:示例:在生命周期方法中使用延迟对象测试异步操作

    `deferred-unit-test` 提供了一种利用延迟对象(Deferred)进行单元测试的方法,尤其是在测试生命周期方法中的异步行为。这个示例旨在帮助开发者理解如何有效地测试那些包含异步逻辑的代码。 首先,让我们深入了解...

    js-unit-test-demo:javascript 单元测试框架演示(mochajasmine + chai + karma)

    Javascript单元测试框架Demo这个Demo主要是用来演示js的单元测试框架及一些配套工具的使用。Mocha/目录用来演示 Mocha, Mocha + chai, Mocha + chai + Karma 的使用Jasmine/目录用来演示 Jasmine, Jasmine + chai, ...

    unit-test-injector:用于单元测试关闭的脚本注入器。 允许单元测试规范在关闭上下文中运行

    $inject ( "http://localhost/unit-test-injector/js/testiife.js" , function ( ) { QUnit . test ( "variable 'name' inside loaded IIFE should be " , function ( assert ) { assert . ok ( name === "IIFE!...

    A0624-rn-unit-test:jest+enzyme+storybook做单元测试

    #rn-unit-test Jest+Enzyme+storybook 配置 Jest配置 1. 安装 在利用react-native init AwesomeProject创建项目的时候就会默认安装了,这里就不多介绍了。 在你使用 或 创建你的 React 或 React Native 项目时,Jest...

    JavaScript Unit Testing 单元测试 PDF

    全书共190页,涵盖了使用Jasmine、YUITest、QUnit和JsTestDriver等流行的JavaScript单元测试框架的实践指南。通过本书,读者将学会同步和异步测试JavaScript应用程序,利用构建和集成管理工具自动化测试,并生成测试...

    angularjs-unit-test:angularjs单元测试的示例

    angularjs单元测试 示例angularjs项目尝试单元测试 安装 使用纱线 yarn install yarn run karma start 使用NPM npm install npm install -g karma karma start

    strapi-unit-test-example:Strapi单元测试示例

    Strapi应用 用Strapi jest集成/功能测试示例。 有关详细信息,请参见主。 理论 相关文章 -Strapi官方文档 由Mateusz Wojczal 由Mateusz Wojczal 测试状态CI / CD: (单击徽章以查看结果...npm run test或yarn test

    unit_test_medium

    本项目“unit_test_medium”关注的是使用JavaScript进行单元测试,这是一种广泛用于前端和后端开发的动态编程语言。在Node.js环境中,我们可以利用各种测试框架来编写单元测试,确保我们的代码质量。 JavaScript的...

    Unit Test Framework for Internet Explore-开源

    【标题】"Unit Test Framework for Internet Explore-开源" 指的是一种专为在Internet Explorer浏览器上进行单元测试而设计的框架。这个框架名为"IeUnit",它简化了对网站逻辑行为进行测试的过程,特别是在Windows ...

    js-unit-test-demo:使用 qunit

    在`js-unit-test-demo-master`这个项目中,你将找到更多关于如何设置和运行QUnit测试的例子。这个项目的目的是帮助开发者了解如何为JavaScript代码编写有效的单元测试,确保代码的健壮性和可维护性。通过实践这些...

    node-unit-test

    综上所述,"node-unit-test"涉及到的核心知识点包括:Node.js环境下的JavaScript编程,单元测试的重要性,以及如何使用像Jest和Mocha这样的测试框架来编写和执行单元测试。通过这些工具和实践,我们可以确保Node.js...

Global site tag (gtag.js) - Google Analytics