【问题标题】:Protractor jasmine empty test spec timeout issue量角器茉莉空测试规范超时问题
【发布时间】:2016-09-09 20:43:08
【问题描述】:

尝试使用量角器运行我的 jasmine 规范时,我收到了非常奇怪的测试规范行为。

我有两个都应该通过的空规范,但是我的第一个规范通过了,然后所有正在进行的规范都失败了。我相信这可能与版本级别有关,因为当我进行更新时,它导致我的 jasmine 测试用例中断。

  • 量角器 3.3.0
  • 茉莉花2.4.1

测试规范

 it('test spec 1', function () {

 });

 it('test spec 2', function () {

 });

错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。

'use strict';
exports.config = {

    seleniumAddress: 'http://127.0.0.1:4723/wd/hub',
    baseUrl: 'http://10.0.2.2:' + (process.env.HTTP_PORT || '8000'),
    specs: [
        './e2e-test.js'

    ],
    framework: 'jasmine',
    jasmineNodeOpts: {
        showColors: true,
        isVerbose: true,
        defaultTimeoutInterval: 30000,
        print: function() {}
    },
    capabilities: {
        deviceName:"Samsung S7",
        platformName: 'Android',
        'appium-version': '1.4.16',
        platformVersion:'23',
        app: 'C:/Users/egreen/Desktop/Android/foo/platforms/android/build/outputs/apk/android-debug.apk',
        browserName:'',
        udid:'988627534e4c383848',
        autoWebview: true

    },

    // A callback function called when tests are started
    onPrepare: function () {

        var wd = require('wd'),
            protractor = require('protractor'),
            wdBridge = require('wd-bridge')(protractor, wd);
        wdBridge.initFromProtractor(exports.config);
        require('jasmine-reporters');
        var fs = require('fs'),
            d = new Date(),
            date = [
                d.getFullYear(),
                ('0' + (d.getMonth() + 1)).slice(-2),
                ('0' + d.getDate()).slice(-2)
            ].join('-'),
            time = [
                ('0'+d.getHours()).slice(-2),
                (('0'+d.getMinutes()).slice(-2)),
                ('0'+d.getSeconds()).slice(-2)
            ].join('');


        var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
        jasmine.getEnv().addReporter(
            new Jasmine2HtmlReporter({
                savePath: 'target/reports/mobile-app/'+date+'/'+time+'/',
                screenshotsFolder: 'images'
            })
        );
        var SpecReporter = require('jasmine-spec-reporter');
        jasmine.getEnv().addReporter(new SpecReporter({displayStacktrace: 'all'}));

    },
};

Error gist

【问题讨论】:

  • 你确定这发生在这个特定的测试中吗?你能提供文件的完整内容和你的量角器配置吗?谢谢!
  • @alecxe 是的,我确定这些测试中正在发生这种情况。它的行为非常奇怪。我还应该补充一点,我正在使用 Appium。因此,该框架也可能存在问题。我会尽快添加我的配置内容。
  • @alecxe 更新了我的问题。

标签: jasmine protractor appium


【解决方案1】:

更新:

  • 尝试消除 Jasmine2HtmlReporter。

  • 尝试添加:

      describe("long asynchronous specs", function() {
        beforeEach(function(done) {
          done();
        }, 10000);
       // Your code here 
    
       afterEach(function(done) {
          done();
        }, 10000);
      }
    

    您也可以查看:Jasmine Asynchronous Support

  • 或尝试在此处添加超时:

     it('test spec 1', function () {
    
     },1000);
    
     it('test spec 2', function () {
    
     },1000);
    

【讨论】:

  • 尝试了指定的解决方案,但我仍然得到相同的结果。我认为我们甚至不需要为这些规范添加超时,因为它们是空的。
  • 查看我关于超时的问题的答案可能会对您有所帮助! stackoverflow.com/questions/37070680/…
  • 使用框架:jasmine2,因为你使用的是Jasmine2HtmlReporter,你有没有试过没有Jasmine2HtmlReporter的测试,可能需要很多时间,试着去掉Jasmine2HtmlReporter?
  • 我尝试使用 jasmine2 并产生相同的结果。我会尝试淘汰 Jasmine2HtmlReporter
  • 就是这样。非常感谢,我猜是代理命令搞砸了。我可能需要更新该模块。您能否更新您的答案,我将标记为正确。
猜你喜欢
  • 2017-02-04
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 2017-06-10
  • 2021-09-16
  • 1970-01-01
  • 2015-12-05
相关资源
最近更新 更多