加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – Karma以什么顺序运行测试?

发布时间:2020-12-17 17:36:23 所属栏目:安全 来源:网络整理
导读:我正在通过jenkins进行卡玛测试. 通常,当测试失败时,它会显示测试名称和测试编号,但在某些情况下,它只显示测试编号. Karma是否按特定顺序运行测试?按字母顺序排列? 下面是jenkins上我的控制台输出的屏幕截图. 解决方法 确定测试运行顺序的不是Karma本身.主
我正在通过jenkins进行卡玛测试.
通常,当测试失败时,它会显示测试名称和测试编号,但在某些情况下,它只显示测试编号.

Karma是否按特定顺序运行测试?按字母顺序排列?

下面是jenkins上我的控制台输出的屏幕截图.

enter image description here

解决方法

确定测试运行顺序的不是Karma本身.主要决定测试顺序的组件是您决定与Karma一起使用的测试运行器.如果你使用Mocha,那么将使用Mocha的逻辑.如果你使用Jasmine,那么将使用Jasmine的逻辑.如果你使用其他东西,那么将使用其他一些逻辑.

例如,Mocha按照描述的顺序运行测试,并在测试文件中调用它.如果你有两个测试文件,首先执行a.js和b.js以及a.js,那么Mocha将首先在a.js中运行测试.如果首先执行b.js,那么Mocha将首先在b.js中运行测试. Mocha没有进一步的排序. (Mocha有一个排序选项,但它仅在使用mocha命令行工具在Node中运行Mocha时使用.它不适用于在Karma中使用Mocha,因为Karma在浏览器中运行Mocha,其中Mocha不支持排序. )

如果使用模块加载器(如RequireJS或SystemJS)动态加载测试文件,这会使事情变得复杂.如果确实需要([“a”,“b”])并且两个模块不相互依赖,那么它们加载的顺序是不确定的. a可以先加载,或者b可以先加载,这样运行测试的顺序从一次运行到下一次运行可能不一致.您可以通过配置或嵌套需求调用强制执行订单. (例如,再次假设模块不依赖于彼此,require([“a”],()=> require(“b”))确保a中的测试将在b中的测试之前执行.)

更复杂的是,如果某些测试运行程序确定您的测试套件存在错误,则会中止测试运行.这不会改变测试的顺序,但可能会使测试缺失.例如,Mocha认为用于设置和拆除测试数据的钩子中的错误(通过反对测试中的错误本身)是测试套件中的错误并将中止运行.如果您的三个测试依赖于失败的设置代码,Mocha将跳过测试.您将看到三次测试中的一次失败,而不是三次失败.这是一个示例测试文件,包含3个测试和before hook中的失败. (之前的钩子,又名“在所有之前”用于在一组测试之前设置测试数据.)

before(() => {
    throw new Error("oh no!");
});

it("one",() => {});

it("two",() => {});

it("three",() => {});

这是我的karma.conf.js:

module.exports = function(config) {
  config.set({
    basePath: '',frameworks: ['mocha'],files: [
      'test.js'
    ],exclude: [
    ],preprocessors: {
    },reporters: ['progress'],port: 9876,colors: true,logLevel: config.LOG_INFO,autoWatch: false,browsers: ['Chrome'],singleRun: false,concurrency: Infinity
  })
}

这是输出(我用< ts>替换了时间戳):

<ts>:INFO [karma]: Karma v1.7.0 server started at http://0.0.0.0:9876/
<ts>:INFO [launcher]: Launching browser Chrome with unlimited concurrency
<ts>:INFO [launcher]: Starting browser Chrome
<ts>:INFO [Chrome 58.0.3029 (Linux 0.0.0)]: Connected on socket qfNuMyp4q3SyUBOsAAAA with id 24880742
Chrome 58.0.3029 (Linux 0.0.0)  "before all" hook FAILED
        Error: oh no!
            at Context.before (test.js:3:11)
Chrome 58.0.3029 (Linux 0.0.0): Executed 1 of 3 (1 FAILED) ERROR (0.013 secs / 0.001 secs)

它说“执行了1的3”,因为它尝试执行第一次测试,但是这次尝试在前钩子中失败,所以Mocha没有尝试运行任何后来的测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读