使用JsTestDriver+;RequireJS+;昆特

使用JsTestDriver+;RequireJS+;昆特,requirejs,qunit,js-test-driver,Requirejs,Qunit,Js Test Driver,经过大量的搜索和尝试,我觉得 工具就是没有。我很想弄错 嗯,技术堆栈如标题所述。扩大, 所有“类”的主干 要求JS加载和管理主干实体之间的依赖关系 QUnit(其中测试也是必需的JS模块) 用于命令行自动化的JsTestDriver 设置和代码片段 jsTestDriver.conf tests.js 服务器启动命令(来自JSTD JAR所在的同一目录) 运行命令的测试(来自JSTD JAR所在的同一目录) 什么有效? 第一个是同步测试 什么不起作用? 第二,异步测试不起作用并超时 错误 镀铬控

经过大量的搜索和尝试,我觉得 工具就是没有。我很想弄错

嗯,技术堆栈如标题所述。扩大,

  • 所有“类”的主干
  • 要求JS加载和管理主干实体之间的依赖关系
  • QUnit(其中测试也是必需的JS模块)
  • 用于命令行自动化的JsTestDriver
  • 设置和代码片段

    jsTestDriver.conf

    tests.js

    服务器启动命令(来自JSTD JAR所在的同一目录)

    运行命令的测试(来自JSTD JAR所在的同一目录)

    什么有效?

    第一个是同步测试

    什么不起作用?

    第二,异步测试不起作用并超时

    错误

    镀铬控制台

    控制台

    注释

    我确实从下载了最新的QUnit适配器。我还尝试了一些其他的,据说可以工作的适配器,但都没有用

    问题

    这可能吗?如果是这样的话,有没有人会对这一问题给予解释

    多谢各位

    更新(08.04.14)


    。仅此而已。

    在异步测试中,将一组简单的语句依次执行是没有意义的。异步测试主要用于在测试中执行耗时任务(例如超时或ajax调用)时不希望停止和启动测试的情况。为了模仿这一点,我们可以改变

    asyncTest('test 2', 1, function() {
        start();
        ok(true, 'passed');
    });
    


    这将像一个迷人的工作

    是否有意义是一个有点诗意的问题。QUnit允许它OOB,它可以工作。无论如何,即使有您的建议,上述设置也存在严重的稳定性问题。您是否有运行上述堆栈的实际经验?实际上,我在使用相同设置的测试用例中遇到了相同的问题。一旦我把它放入setTimeout,如代码所示,它就工作了。我确实按照你之前的建议做了。结果是,使用
    runningmodeprofile
    运行时会完全跳过测试,
    runningmodedebug
    有时会工作,有时会失败。如果您可以共享您的设置和配置,我将接受答案。这是我用于运行测试用例的配置:-端口42442--配置JsTestDriver.conf--浏览器超时20--服务器--浏览器“C:\Program Files\Internet Explorer\iexplore.exe”--tests all--runnerMode DEBUGI的意思是包括jsTestDriver.confIt已经有一段时间了,因为你发布了这个问题--Dilip的建议解决了你的问题还是你想出了其他的办法?只是好奇,我也有类似的情况。不走运。然而,在我的另一个项目中,我决定使用Grunt和Phantom.JS来支持QUnits,到目前为止,它运行正常。
    require({  
        baseUrl : '/test',
        shim : {
            'fixture.object' : ['jquery'],
            'fixture.string' : ['jquery'],
            'fixture.dom' : ['jquery', 'fixture.string'],
            'fixtures' : ['fixture.object', 'fixture.string', 'fixture.dom'],
            'equiv' : ['qunit'],
            'qunit.adapter' : ['qunit', 'equiv']
        },
        paths: {  
            'text' : 'lib/requirejs/text',
            'jquery' : 'lib/jquery/jquery-1.7.1',
            'backbone' : 'lib/backbone/amd/backbone',
            'underscore' : 'lib/underscore/amd/underscore',
            'fixture.dom' : 'lib/fixture/jquery.dom.fixture',
            'fixture.string' : 'lib/fixture/jquery.lang.string',
            'fixture.object' : 'lib/fixture/jquery.lang.object',
            'fixtures' : 'fixture/fixtures',
            'qunit' : 'lib/qunit/qunit-1.10.0',
            'equiv' : 'lib/qunit/equiv',
            'qunit.adapter' : 'lib/qunit/QUnitAdapter'
        }
    }, [], function() {
        module('Module 1', {});
    
        test('test 1', 1, function() {
            ok(true, 'passed');
        });
    
        asyncTest('test 2', 1, function() {
            start();
            ok(true, 'passed');
    
        });
    });
    
    java -jar JsTestDriver-1.3.4.b.jar --port 48080
    
    java -jar JsTestDriver-1.3.4.b.jar --runnerMode PROFILE --reset --dryRunFor all --tests all
    
    Uncaught TypeError: Cannot read property 'all' of undefined qunit-1.10.0.js:1102
    done qunit-1.10.0.js:1102
    process qunit-1.10.0.js:1285
    (anonymous function) qunit-1.10.0.js:383
    
    setting runnermode PROFILE
    Chrome: Reset
    Chrome: Reset
    Chrome 22.0.1229.64: 1 tests [
    Module 1 (/test/test/tests.js)
            test test 1
            test test 2]
    .F
    Total 2 tests (Passed: 1; Fails: 1; Errors: 0) (30025.00 ms)
      Chrome 22.0.1229.64 Windows: Run 2 tests (Passed: 1; Fails: 1; Errors 0) (30025.00 ms)
        Module 1.test test 2 failed (30023.00 ms): Error: Callback '#1' expired after 30000 ms during test step 'start()'
          Error: Callback '#1' expired after 30000 ms during test step 'start()'
    
    Sep 23, 2012 8:36:44 PM com.google.jstestdriver.ActionRunner runActions
    INFO:
    
    asyncTest('test 2', 1, function() {
        start();
        ok(true, 'passed');
    });
    
    asyncTest('test 2', 1, function() {        
        setTimeout(function(){
            ok(true, 'passed');
            start();
        },2000);    
    });