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'
}
现在,有两间套房->
TestSuite1.class
和
TestSuite2.class
两者都运行在上述配置的帮助下使用 multiForking 并行。
两个套件都包含 UI 个测试用例,旨在验证沙盒上的支付状态,
实际问题:沙盒一次只允许 1 次登录(如果其他线程尝试验证付款状态,会话将过期)
我想运行以一种同步的方式进行支付验证,这样支付验证可以一次由一个线程完成(而其他线程等待)。
问候
尼克斯
首先,对于您展示的示例,Gradle 的工作方式是为每个 TestSuite 启动一个新的 JVM,一个单独的进程。这意味着这不是多线程问题,而是进程同步问题。
您需要为您的进程创建某种锁。
我能想到的最基本的方法是在文件系统上创建一个锁定目录。
编写一个实用方法,检查锁定目录是否存在,如果存在,等待它消失以继续。
如果该目录不存在,请创建该目录。
然后访问支付沙箱,前提是你已经创建了目录。
请注意,可能存在竞争条件,具体取决于您的实施。
但在实践中应该不是问题。由于 UI 测试相当慢,您可能不会以足够高的频率请求来注意到它。
背景 : 我正在使用 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 测试相当慢,您可能不会以足够高的频率请求来注意到它。