gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:16:50 26 4
gpt4 key购买 nike

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

tasks.withType(Test) {
maxParallelForks = 2
forkEvery = 1
include '**/*TestSuite*.class'
}
现在有两个套间->
  • TestSuite1.class

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

  • 这两个套件均包含UI测试用例,旨在验证沙盒上的付款状态,
    实际问题:沙盒一次仅允许1次登录(如果其他线程尝试验证付款状态, session 将终止)
    我想以一种同步的方式运行付款验证方法,以便一次可以由一个线程完成付款验证(而另一个线程在等待)。
    问候
    尼克斯

    最佳答案

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

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

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

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

    关于multithreading - 使用Geb + Spock + Gradle + groovy的UI自动化中的方法同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54419370/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com