当前位置: 首页 > 知识库问答 >
问题:

使用JsTestDriver进行测试需要JS QUnit

裴兴学
2023-03-14

在进行了大量的搜索和尝试之后,在我看来,所选择的工具组合并不具备这一点。我很乐意被弄错。

嗯,技术栈如题所述。为了扩张,

  1. 所有“类”的主干
  2. 要求JS加载和管理骨干实体之间的依赖关系。
  3. QUnit(测试也需要JS模块)
  4. 用于命令行自动化的JsTestDriver

设置和代码片段

jsTestDriver.conf

server: http://localhost:48080
basepath: path/to/JSTestDriver/
load:
  - lib/qunit/qunit-1.10.0.js
  - lib/qunit/equiv.js
  - lib/qunit/QUnitAdapter.js
  - lib/requirejs/require.js
test:
  - test/tests.js
serve:
  - lib/jquery/jquery-1.7.1.js
  - test/components/ComponentOneTest.js

tests.js

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');

    });
});

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

java -jar JsTestDriver-1.3.4.b.jar --port 48080

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

java -jar JsTestDriver-1.3.4.b.jar --runnerMode PROFILE --reset --dryRunFor all --tests all

什么管用?

第一个是同步测试。

什么不起作用?

第二,异步测试不工作并且超时。

错误

Chrome控制台

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:

笔记

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

问题

这有可能吗?如果是这样,有人会这么好心地阐明这个问题吗?

谢谢你。

更新(08.04.14):

业。仅此而已。

共有1个答案

哈烨熠
2023-03-14

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

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

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

这将像魅力一样工作!!!

 类似资料:
  • 问题内容: 也许我的问题是新手,但是我真的无法理解在什么情况下使用junit? 无论是编写简单的应用程序还是大型应用程序,我都使用语句对其进行测试,这对我来说很容易。 如果仍然需要调用相同的方法,检查它们返回的内容,然后又要为所有内容添加注释,那么为什么要使用JUnit创建测试类,在项目中创建不必要的文件夹呢? 为什么不编写一个类并立即对其进行测试而不创建Test-class? PS。我从未在刚刚

  • 我正在尝试micronaut,我在理解如何进行单元测试方面遇到了一些困难。 我有一个只有一个控制器的简单应用程序(它返回hello)。 现在我要测试这个endpoint。来自springboot的我希望micronaut有一些runner类,比如,但我找不到。micronaut中有运行测试的runner类吗? 从这里的文档中,我看到可以使用HttpClient测试restendpoint。我两个都

  • 方法和测试位于一个类中,例如 下面是我的testng.xml的示例,其中包含了包含功能测试的包 UPD.post修改后的代码中包含AfterTest。我只使用before/aftermethod注释

  • 简介 在之前的章节我们实现了一个简单但是功能齐全的web项目、学习了如何使用Gradle来构建和运行这个项目。测试代码是软件开发周期中非常重要的一环,能够确保软件的行为能符合预期。这一章我将讲述如何使用Gradle来组织、配置和执行测试代码,学习如何写单元测试、集成测试和功能测试并把他们集成到项目构建中。 Gradle集成了很多Java和Groovy测试框架,在本章的最后你会用JUnit、Test

  • 本节课将介绍如何使用specs —— 一个Scala行为驱动设计(BDD)框架,来进行测试。 扩展规格 让我们直接开始。 import org.specs._ object ArithmeticSpec extends Specification { "Arithmetic" should { "add two numbers" in { 1 + 1 mustEqual