[英]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.