当我的QUnit测试中发生异常时,它会说
Died on test #n: message
如何让它打印回溯或其他位置信息,以便我可以看到发生异常的位置?
答案 0 :(得分:5)
我不认为有可能让QUnit为您提供错误发生位置的跟踪。您的代码生成了一个异常,QUnit已捕获并报告该异常。如果勾选QUnit结果顶部的“notrycatch”复选框,您的测试将再次运行,但这次QUnit不会捕获异常。然后,您的浏览器可能会向您提供有关实际发生情况的更多信息,但这取决于错误是什么。
答案 1 :(得分:0)
修改强> 在回答这个问题时,我怀疑这不是你想问的问题。所以我编辑了答案来展示这个,可能更有用的部分,首先:
因为你写了“当我的QUnit测试中发生异常时”,让我更深入地解释一下测试的概念:
首先:您的QUnit测试中不会发生异常,但是在您的代码中也是如此。好消息是:qUnit在您的情况下正在做它应该做的事情:它测试您的代码,并且由于您的代码有问题,您的代码在测试时会引发异常。
由于qUnit是一个测试环境,因此它不负责提供异常回溯。只有在那里检查您实现的功能是否按预期的方式工作,而不是跟踪错误。出于这种目的,像FireBug或Safari的开发人员工具更适合。
让我描述一个场景:
总结一下:测试不是用于调试,而是用于确保事情按照您认为的方式工作。如果出现错误,您不会编写测试来解决它,但是写一个测试来重现它。然后你找到bug,删除它,测试将通过。如果稍后重新发现错误(即由于代码更改),测试将再次失败,并且您立即知道错误已经恢复。
通过建立测试驱动开发可以进一步实现这一点,在编写功能本身之前编写测试。然后上面的场景将改为:
这样做有两个主要优点:
快乐的测试。
编辑结束 - 原始答案如下,以防万一需要。
使用QUnit时,我强烈建议您遵循jQuery文档网站http://docs.jquery.com/Qunit上显示的方法:
要使用QUnit,您必须包含其qunit.js和qunit.css文件 提供用于显示测试结果的基本HTML结构:
您所要做的就是加载qunit.js和qunit.css文件,然后将此代码段放到您的页面中,以获得有关测试过程的可视反馈:
<h1 id="qunit-header">QUnit example</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">test markup, will be hidden</div>
这样做会产生一个整洁的渲染和交互式控制台,显示有关测试结果的确切报告。每个测试都有一行显示它是否通过,点击该行展开每个测试的结果。这看起来有点像这样:
要自定义qUnit显示的错误消息,您只需将要显示的字符串附加到测试中。而不是
ok($('.testitem:first').is(':data(droppable)'))
使用
ok($('.testitem:first').is(':data(droppable)'),
"testitem is droppable after calling setup_items('.testitem')");
获取图片中显示的错误消息。否则qUnit会回退到与使用过的测试相关的一些标准错误消息。