在运行另一个规范文件之前等待执行特定规范文件-Jasmine/量角器

在运行另一个规范文件之前等待执行特定规范文件-Jasmine/量角器,jasmine,protractor,wait,Jasmine,Protractor,Wait,工具:量角器3.3.0、Jasmine 2.4.1、Selenium独立服务器 我有一个测试套件,其中包含大量spec.js文件,每个文件都包含我的应用程序的唯一测试 我正在使用maxInstances和shardTestFiles浏览器功能启动3个浏览器并运行每个规范文件,以减少整个套件的运行时间(3个浏览器的运行时间约为20分钟,因此如果没有它,可能会超过一个小时) 我的问题是如何告诉量角器让一个规范文件在执行之前等待另一个规范文件的完成。例如: 假设我有一个第1页测试,我有规范文件a1.s

工具:量角器3.3.0、Jasmine 2.4.1、Selenium独立服务器

我有一个测试套件,其中包含大量spec.js文件,每个文件都包含我的应用程序的唯一测试

我正在使用maxInstancesshardTestFiles浏览器功能启动3个浏览器并运行每个规范文件,以减少整个套件的运行时间(3个浏览器的运行时间约为20分钟,因此如果没有它,可能会超过一个小时)

我的问题是如何告诉量角器让一个规范文件在执行之前等待另一个规范文件的完成。例如:

假设我有一个第1页测试,我有规范文件a1.speca2.spec,和a3.spec,然后我有一些类似结构的其他测试,或者你有什么


当我使用3个浏览器实例启动量角器时,正如预期的那样,a1.speca2.speca3.spec都使用各自的浏览器实例启动,因为它们的比例为1:1。但是如果a3.spec无法运行,除非a2.spec完成,该怎么办?如何使此等待发生,或者不使某些测试相互依赖只是一种最佳做法?

您可以在需要时间异步完成的任何测试的
之前
之前
中使用
done
回调。在等待的测试完成之前,不会运行以下任何测试

在每个例子之前 it示例
这将根据需要排队,但测试将连续运行。为了加快速度,您可以使用承诺,但这可能会使事情变得太复杂。

就我个人而言,我试图使我的所有规格相互独立。我不知道如何“等待”特定的规范,但据我所知,量角器确实根据套件的字母顺序执行测试。这对您来说是一种可能性,但是随着您不断添加规格,这将不必要地难以跟上。。。如果它们是依赖的,我可能会把它们合并成一个更大的E2E场景。谢谢你的回复!到目前为止,这是我确切的思考过程。我知道测试是按字母顺序执行的,但即使使用我分割测试文件和使用多个浏览器实例的方式,名为“z.spec”的东西仍有可能在“a.spec”完成之前运行。我试图避免使用尽可能多的依赖项和虚拟数据。似乎到目前为止,我的最佳选择是制作更大的E2E文件,并将添加、编辑和删除过程集于一身。再次感谢!我肯定会在设计测试时考虑并行执行。我使用docker在10个并行实例中运行测试,我必须确保它们不会与其他测试冲突。如果您在开始新测试之前等待测试结束,那么您将失去并行执行的许多好处。我首先在chrome中的10个并行实例中运行测试,一旦实例完成chrome中的规范,它就会在firefox中运行测试,因此我不会同时运行相同的测试。@sonhu您如何定义它在chrome之后立即运行firefox?或者你只是用不同的配置设置手动完成这项工作?你需要使用grunt和一个名为concurrent的grunt插件。这不一定是对这个特定问题的回答,但它会给你们比仅仅依靠量角器更大的控制。我有一个例子可以作为参考。大部分逻辑都在grunt和conf文件中。
beforeEach(function(done) {
    setTimeout(function() {
        value = 0;
        done();
    }, 1);
});
it("should support async execution of test preparation and expectations", function(done) {
    value++;
    expect(value).toBeGreaterThan(0);
    done();
});