简短的回答:这是不可能的。事实上,它似乎是从未成为可能。
从更新日志:
重命名测试中总结断言。修复#336 - 摘要计数断言,但提及“测试”。
QUnit一直计数并输出通过/失败的断言数。然而,在通过它说“测试”应该说“断言”。如果您重新阅读更新日志,则说它已从“测试”更改为“断言”作为修复,因为这是它应该说的。
至于你的后续问题,是否有可能破解源代码?
通过代码看,线1269至1279年似乎是产生输出,其中:
html = [
"Tests completed in ",
runtime,
" milliseconds.<br/>",
"<span class='passed'>",
passed,
"</span> assertions of <span class='total'>",
config.stats.all,
"</span> passed, <span class='failed'>",
config.stats.bad,
"</span> failed."
因此,它是存储遍数/失败在config.stats对象。不幸的是,根据我在源代码中读到的内容,它只存储与断言相关的统计信息,而不是测试。推测可能会添加一些可以存储失败测试的破解代码,但是它需要对现有源代码有很好的了解,所以我不会推荐这样做。
正如你所说,你最好的选择是在GitHub上建议它,但是我不知道你在不久的将来会添加什么机会(如果全部),看到的断言数失败的是(通常)比测试的数量更有价值。
更新:我有一个拖网通过源代码更多,因为我很好奇它会是多么困难。虽然我无法找到任何简单的方法将此功能添加到代码中,但我确实想到了针对您的问题的替代解决方案。
QUnit拥有一个名为QUnit.testDone()的方法,如果您实现它,将在每次测试完成后自动调用。您可以使用它在每次测试后手动增加一个测试计数器,并输出到Chrome的开发者控制台。这里是你如何做到这一点的一个例子:
<!DOCTYPE html>
<html>
<head>
<title>Track Number of Tests Manually</title>
<link type="text/css" rel="stylesheet" href="qunit-1.12.0.css" />
<script type="text/javascript" src="qunit-1.12.0.js"></script>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture">
<input type="text" name="aninput" id="aninput" />
</div>
<script>
// Track number of tests run and failed.
var numTests = 0;
var failedTests = 0;
// Outputs the number of failed tests so far. If the console is not cleared each time, then the last message will be the final count.
QUnit.testDone(function(details) {
// If any previous messages in console, clear them
console.clear();
// Increment number of tests run
numTests++;
// If any assertions have failed, increment number of failed tests
if (details.failed > 0)
failedTests++;
var passed = numTests - failedTests;
// Output to console.
console.log('Passed Tests: '+passed+'\nFailed Tests: '+failedTests+'\nTotal Tests: '+numTests);
});
test("a test", function() {
equal($('#aninput').val(), '', 'Initially empty');
$('#aninput').val('sometext');
equal($('#aninput').val(), 'sometext', 'Input text now "sometext"');
});
test("another test", function() {
equal($('#aninput').val(), '', 'Initially empty');
$('#aninput').val('sometext');
equal($('#aninput').val(), 'some text', 'Input text now "some text"'); // Expect to fail, as there is no space in the input
$('#aninput').val(' ');
equal($('#aninput').val(), '', 'Input should now be empty'); // Expect to fail as was actually set to whitespace, not empty
});
</script>
</body>
</html>
我已经测试了这个代码,它似乎是做伎俩。我知道这并不完全是你之后的解决方案,但它确实为您提供了所需的信息,而无需尝试破解QUnit源代码! :)
非常感谢您的回答和代码。我添加了一个类似的东西到我正在使用的定制QUnit。除了你想评估你的代码如何满足需求的情况外,我认为断言比测试更重要。如果每个测试都涵盖了一项功能,那么最好是对这些功能进行计数,而不是对每一项测试进行计数,其中许多测试可能与每次测试之前的设置有关,而不是功能本身。再次感谢。 – WheretheresaWill