JasmineReporter JUnitXmlReporter会覆盖运行结果

时间:2017-03-04 01:49:35

标签: xml junit jasmine protractor

我的规格共享相同的第一个描述(第二个是不同的),例如。

spec1.js:

describe("topic1",()=> {
  describe("testcase1",()=> {
   ...
  });
});

spec2.js:

describe("topic1",()=> {
  describe("testcase2",()=> {
   ...
  });
});
如果我在同一个浏览器中运行这两个规范,那么

可以正常工作,如:

protractor --specs spec1.js,spec2.js config.js

但是我想用spec1.js和spec2.js之间的运行重启浏览器:

protractor --specs spec1.js config.js; protractor --specs spec2.js config.js

或设置功能:

shardTestFiles: true

然后是junitresults.xml resp。生成junitresults-topic1.xml(取决于consolidateAll选项为truefalse),仅包含最后一个规范(spec2.js)运行的结果。

如何在XML结果中获得所有运行?

2 个答案:

答案 0 :(得分:0)

我建议使用选项 - restartBrowserBetweenTests,而不是两次触发Protractor以避免使用相同的浏览器会话。查看以下摘录自Protractor official documentation

  

/ ** *如果为true,量角器将在每个之间重新启动浏览器   测试。默认*值为false。* /

  restartBrowserBetweenTests?: boolean;

这将帮助您避免jUnit XML报告被覆盖的问题。

答案 1 :(得分:0)

我们的版本存在类似的问题。它们运行良好,但是我们只能根据“ maxInstances”参数获得结果数量。我们同时使用jUnit XML和漂亮的报告器。为了解决这个问题,我们在漂亮的报告程序中添加了“ isSharded:true”,在multiCapabilite中添加了“ shardOnSpec:true”。这是一个示例:

let prettyReporter = new PrettyReporter({
  path: dirPath,
  screenshotOnPassed: false,
  isSharded: true
});

multiCapabilities: [{
    browserName: 'chrome',
    chromeOptions: {
      args: ["--window-size=1920x1080"]
    },
    shardTestFiles: true,
    shardOnSpec: true,
    maxInstances: 4,
  }],

我们在Azure DevOps中运行CI / CD,这使报告程序可以处理所有运行的测试。因此,现在我们获得了所有测试结果,而不仅仅是最后的4个。

希望这会有所帮助。