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

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'
}

现在,有两间套房->

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

实际问题:沙盒一次只允许 1 次登录(如果其他线程尝试验证付款状态,会话将过期)

我想运行以一种同步的方式进行支付验证,这样支付验证可以一次由一个线程完成(而其他线程等待)。

问候 尼克斯

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

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

编写一个实用方法,检查锁定目录是否存在,如果存在,等待它消失以继续。 如果该目录不存在,请创建该目录。 然后访问支付沙箱,前提是你已经创建了目录。

请注意,可能存在竞争条件,具体取决于您的实施。 但在实践中应该不是问题。由于 UI 测试相当慢,您可能不会以足够高的频率请求来注意到它。