是否可以在Karma中使用QUnit运行单个测试?

时间:2013-09-24 07:58:59

标签: testing qunit karma-runner

Jasmine有iit()ddescribe,而Mocha有it.onlydescribe.only,但我看不出有什么办法让QUnit专注于运行单个测试

QUnit UI允许您运行单个测试,但我无法看到如何在Karma中使用它,因为它不显示QUnit UI。

4 个答案:

答案 0 :(得分:3)

这是我的解决方案。它对我来说很好,但YMMV。

here下载qunit-karma-setup.js,qunit-karma-launch.js

然后,在你的Gruntfile中:

config.set({
  frameworks: ['qunit'],
  files: [
    'your-app-files-here/**/*.js',
    'qunit-karma-setup.js',
    'your-tests-here/**/*.js',
    'qunit-karma-launch.js'
  ]
});

现在,您可以使用omodule(),otest(),oasyncTest()函数分别仅运行选定的模块或测试。

答案 1 :(得分:2)

QUnit设计不是很好,但你可以改进它!

QUnit的过滤机制是validTest函数,读取QUnit.config.filter(字符串,测试名称)。见https://github.com/jquery/qunit/blob/master/src/core.js#L820

有两个问题:

  1. 它只允许选择一个测试,
  2. 您需要提前知道所选的测试名称(因为测试在创建时会被过滤)。
  3. 建议将QUnit更改为:

    • 使用自定义“过滤器”功能过滤(默认实现可以执行当前validTest所做的事情),
    • 执行时过滤测试(意味着,首先收集所有测试)

    然后,实施包容性测试将很简单; - )

答案 2 :(得分:1)

将其添加到测试文件的顶部

var ttest = test;
test = function() {}

将要运行的测试重命名为ttest。看起来很笨拙,但很简单,效果很好。

答案 3 :(得分:0)

我相信你可以使用only。取自文档:

test('my test 1', function (assert) { ... });

only('my test that will be run exclusively now', function (assert) { ... });

因此,您使用test

而不是使用单词only