angular – Karma以什么顺序运行测试?
我正在通过jenkins进行卡玛测试.
通常,当测试失败时,它会显示测试名称和测试编号,但在某些情况下,它只显示测试编号. Karma是否按特定顺序运行测试?按字母顺序排列? 下面是jenkins上我的控制台输出的屏幕截图. 解决方法
确定测试运行顺序的不是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没有尝试运行任何后来的测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |