繁体   English   中英

使用Geb + Spock + Gradle + groovy的UI自动化中的方法同步

[英]method synchronization in UI automation using Geb+Spock+Gradle+groovy

背景 :我正在使用Geb + Spock + Gradle进行UI测试自动化,并使用build.gradle文件,其中包含以下配置:

tasks.withType(Test) {
    maxParallelForks = 2
    forkEvery = 1
    include '**/*TestSuite*.class'
}

现在有两个套间->

  • TestSuite1.class

  • TestSuite2.class

    两者都在上述配置的帮助下使用multiForking并行运行。

这两个套件均包含UI测试用例,旨在验证沙盒上的付款状态,

实际问题 :沙箱一次只能登录1次(如果其他线程尝试验证付款状态,会话将终止)

我想以同步方式运行付款验证方法,以便一次可以由一个线程完成付款验证(而另一个线程在等待)。

关于尼克斯

首先,对于您显示的示例,Gradle的工作方式是为每个TestSuite启动一个新的JVM(一个单独的进程)。 这意味着这不是多线程问题,而是一个进程同步问题。

您将需要为进程创建某种类型的锁。 我能想到的最基本的方法是在文件系统上创建一个锁定目录。

编写一个实用程序方法,该方法检查锁目录是否存在,如果存在,请等待其消失以继续。 如果目录不存在,请创建目录。 然后,仅在创建目录后,才能访问付款沙箱。

请注意,可能会出现争用情况,具体取决于您的实现。 但这在实践中应该不是问题。 由于UI测试相当慢,因此您可能不会以足够高的频率发出请求以至于无法注意到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM