Chutzpah,错误:测试已经开始运行时调用start(),当我"运行JS测试"在一个简单的html文件上

时间:2017-05-18 11:49:53

标签: javascript chutzpah

我已经安装了2个Chutzpah Visual Studio插件(使用VS 2015),Context Menu和Test Explorer扩展。我可以右键单击test.js文件并成功运行。我可以从Test Explorer运行测试,测试成功运行。问题是当我右键单击test.html文件时,我收到以下错误。

  

错误:错误:测试已开始运行时调用start()   在文件的开头:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第2679行)   在startQUnit(第12行)   在onPageLoaded(第16行)    (第18行)   运行时:C:\ Users \ byron \ documents \ visual studio 2015 \ Projects \ WebApplication1 \ WebApplication1 \ Tests \ codeSample \ test.html   ------测试开始:文件:C:\ Users \ byron \ documents \ visual studio 2015 \ Projects \ WebApplication1 \ WebApplication1 \ Tests \ codeSample \ test.html ------   错误:TypeError:undefined不是对象(评估' QUnit.jsDump.multiline = false')   登录未定义(第88行)   在文件中的runLoggingCallbacks:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第1036行)   at logAssertion in file:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(1701行)   在文件中的pushResult:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第1672行)   在pushFailure中的文件:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第1685行)   在文件中运行:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第1430行)   在file:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第1620行)   提前在file:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第1105行)   在文件开头:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第2796行)   在file:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第2756行)   运行时:C:\ Users \ byron \ documents \ visual studio 2015 \ Projects \ WebApplication1 \ WebApplication1 \ Tests \ codeSample \ test.html   错误:TypeError:undefined不是对象(评估' QUnit.jsDump.multiline = false')   登录未定义(第88行)   在文件中的runLoggingCallbacks:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第1036行)   at logAssertion in file:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(1701行)   在文件中的pushResult:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第1672行)   在pushFailure中的文件:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第1685行)   在pushFailure中的文件:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第1822行)   at file中的onError:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第2560行)   在文件中的onerror:/// C:/Users/byron/documents/visual%20studio%202015/Projects/WebApplication1/WebApplication1/Tests/Framework/qunit-2.3.2.js(第3844行)   运行时:C:\ Users \ byron \ documents \ visual studio 2015 \ Projects \ WebApplication1 \ WebApplication1 \ Tests \ codeSample \ test.html   错误:执行测试文件时发生超时   运行时:C:\ Users \ byron \ documents \ visual studio 2015 \ Projects \ WebApplication1 \ WebApplication1 \ Tests \ codeSample \ test.html   ==========总测试:0通过,0失败,0总==========

我已经使用Chutzpah示例文件进行测试,并添加了一个测试来测试JQuery是否正常工作,这里有文件和Chutzpah.json文件。

的test.html

    <html>
<head>
    <link rel="stylesheet" href="../Framework/qunit-2.3.2.css" type="text/css" />

    <script type="text/javascript" src="../Framework/jquery-3.1.1.js"></script>
    <script type="text/javascript" src="../Framework/qunit-2.3.2.js"></script>
    <script type="text/javascript" src="code.js"></script>
    <script type="text/javascript" src="test.js"></script>
</head>
<body>
<h1 id="qunit-header">Unit Tests</h1>
<h2 id="qunit-banner"></h2>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests">
</ol>
<div id="qunit-fixture">test markup, will be hidden</div>
</body>
</html>

test.js

/// <reference path="code.js"/>

QUnit.module("test");

$(document).ready(function() {
    QUnit.test("will add 5 to number",
        function() {
            var res = mathLib.add5(10);

            QUnit.assert.equal(res, 15, "should add 5");
        });

QUnit.test("test jquery",
    function() {
        var result = $("#qunit-fixture");
        QUnit.assert.ok(result.length > 0);
    });
});

code.js

var mathLib = {
    add5: function (a) {
        return a + 5;
    }
}

Chutzpah.json

{
  "RootReferencePathMode": "SettingsFileDirectory",
  "References": [
    { "Path": "Framework" }
  ]  
}

我的项目文件夹结构:

  • WebApplication1(项目)
    • 锅炉板MVC文件夹
    • 测试
    • codeSample
      • code.js
      • 的test.html
      • test.js
    • 框架
      • 的jquery-3.1.1.js
      • qunit-2.3.2.css
      • qunit-2.3.2.js

最终,我需要更新250个JS测试,以便从Visual Studio中运行所有这些测试。目前,所有测试仅通过脚本在TeamCity中运行。

2 个答案:

答案 0 :(得分:1)

直接在JS文件上运行时,Chutzpah效果最佳。虽然Chutzpah根据您的设置确实可以处理HTML文件,但您可能需要做更多的工作。在这个例子中,因为你的测试被包装等待文档就绪,我的猜测是QUnit在你的测试注册之前就开始运行了。

你应该让Chutzpah为你生成HTML,因为这样可以减少维护并且更加健壮。

答案 1 :(得分:0)

将QUnit和Chutzpah升级到目前最新版本(分别为2.3.2和4.3.4)后遇到同样的问题。
经过多次尝试后,最终恢复到有效的组合(QUnit 1.18.0和Chutzpah 4.2.2),这解决了问题。