grunt没有正确运行Qunit测试

时间:2015-01-19 10:30:36

标签: javascript gruntjs travis-ci grunt-contrib-qunit

情境:我目前正在使用Qunit在TypeScript / Javascript中测试项目,当我在浏览器中运行它们时,一切正常。

问题:我试图使用grunt以无头模式运行QUnit测试(我需要它进行持续集成测试)并且测试不能正常运行。

配置 以下是我目前设置的方式:

Gruntfile.js
package.json
src/
  - Ts source files
test/
  - config.js
  - Test.ts
  - Test.js
  - test.html

Gruntfile.js

/*global module:false*/
module.exports = function(grunt) {

    grunt.initConfig({
        connect: {
            server: {
                options: {
                    port: 8000,
                    base: '.'
                }
            }
        },

        qunit: {
            all: {
                options: {
                    urls: [
                        'http://localhost:8000/test/test.html'
                    ]
                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-qunit');
    grunt.loadNpmTasks('grunt-contrib-connect');

    grunt.registerTask('test', ['connect', 'qunit']);

};

的package.json

{
  // Name, version, description, repo and author fields...
  "engines": {
    "node": ">= 0.10.0"
  },
  "devDependencies": {
    "grunt": "~0.4.5",
    "grunt-contrib-watch": "~0.6.1",
    "grunt-contrib-connect": "~0.9.0",
    "grunt-contrib-qunit": "~0.5.2"
  }
}

然后我有一个 .travis.yml 文件来运行所有这些。我不知道它是否真的很重要,因为测试不是在travis或我当地的环境中运行,但不管怎么说都是这样:

language: node_js
node_js:
 - "0.11"
 - "0.10"
before_install:
 - "npm install grunt --save-dev"
 - "npm install -g grunt-cli"
install:
 - "npm install"
 - "npm install -g typescript"
script:
 - "tsc --module amd --target ES5 ./src/*.ts"
 - "grunt test --verbose --force"

以下是travis构建错误的部分:http://puu.sh/eKpWj/35614680e1.png

(当我在浏览器中运行它们时,我目前有大约20个断言。而且,打字稿编译运行正常。)

编辑:正如有人问过它,这里是Test.html文件的内容:http://pastebin.com/LN3igmjc

编辑2:此处还有 config.js 的内容:

var require = {
    baseUrl: "../src/"
};

1 个答案:

答案 0 :(得分:0)

实际上我设法让它发挥作用。 我改变了两件事:

  1. 我没有编译测试,因为tsc --module amd --target ES5 ./src/*.ts编译了src文件夹中的文件,测试文件位于test文件夹中。 我抨击自己这个...... 所以我只是在tsc --module amd --target ES5 ./test/*.ts文件
  2. 中添加了.travis.yml
  3. 最大的问题是QUnit测试试图在require.js工作之前启动。我使用的解决方案是告诉QUnit不要使用QUnit.config.autostart = false;自动启动测试,并在我需要QUnit.start();时启动测试我将此start()放在Test.js文件的末尾这样只有在QUnit完成加载时才开始测试。