//编辑:
如果有人能分享如何构建覆盖率报告的想法,那将是非常棒的。
提前致谢:).
声明:我是Arquillian项目的贡献者。
您可以使用Arquillian Qunit Extension开源扩展程序在Jenkins上执行QUnit测试。一般来说,Arquillian Qunit Extension可以轻松地在持续集成环境中使用。在这个GitHub repo上,您可以找到一个真实的例子,说明如何使用Arquillian Qunit Extension在Travis CI无头机器上执行QUnit测试。
Arquillian是JBoss社区项目。
Arquillian Qunit Extension是一个Arquillian扩展,可自动化QUnit JavaScript测试。 Arquillian Qunit Extension与JUnit测试框架无缝集成。
您可以在README文件中找到更多信息。此外,还有一个showcase,可以通过Maven执行,并显示如何设置测试用例。
使用此扩展,您可以选择在QUnit测试执行期间部署存档和/或在单个执行中执行一个或多个QUnit测试套件。此外,您可以使用@InSequence注释定义QUnit测试套件执行顺序。
例如,假设您想执行两个QUnit测试套件(qunit-tests-ajax.html和qunit-tests-dom.html),并且这些测试套件中包含的QUnit测试执行Ajax请求到Web服务。显然,在执行测试时,您需要将此Web服务放在主机上。Arquillian可以自动将Web服务部署到容器中。在这种情况下,您的Arquillian测试用例将如下所示: @RunWith(QUnitRunner.class)
@QUnitResources("src/test/resources/assets")
public class QUnitRunnerTestCase {
private static final String DEPLOYMENT = "src/test/resources/archives/ticket-monster.war";
/**
* Creates the Archive which will be finally deployed on the AS.
*
* @return Archive<?>
*/
@Deployment()
public static Archive<?> createDeployment() {
return ShrinkWrap.createFromZipFile(WebArchive.class, new File(DEPLOYMENT));
}
/**
* Execute the qunit-tests-ajax.html QUnit Test Suite.
*/
@QUnitTest("tests/ticketmonster/qunit-tests-ajax.html")
@InSequence(1)
public void qunitAjaxTests() {
// empty body - only the annotations are used
}
/**
* Execute the qunit-random-tests.html QUnit Test Suite.
*/
@QUnitTest("tests/ticketmonster/qunit-random-tests.html")
@InSequence(2)
public void qunitRandomTests() {
// empty body - only the annotations are used
}
}
BlanketJS 是一个非常棒的代码覆盖率工具,与 QUnit 配合得很好。我已经使用它大约一年了。
对于 Jenkins 集成,我使用 grunt,如果 grunt 任务失败,则退出并返回 0,如果成功,则返回 1,因此它可以完美地集成到 Jenkins 中。
没有现有的 Grunt 插件可以同时处理 Blanket 和 QUnit,所以我最终编写了自己的 Grunt 插件。该插件支持“强制执行”最低阈值,否则 Grunt 任务将失败。
我在这里写了一篇博客文章,详细介绍了所有细节:http://www.geekdave.com/2013/07/20/code-coverage-enforcement-for-qunit-using-grunt-and-blanket/