метод синхронизации в автоматизации пользовательского интерфейса с использованием Geb + Spock + Gradle + groovy - PullRequest
0 голосов
/ 29 января 2019

Справочная информация : я использую Geb + Spock + Gradle для автоматизации тестирования пользовательского интерфейса и использую файл build.gradle, который содержит следующую конфигурацию:

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

сейчас есть два набора ->

  • TestSuite1.class

    и

  • TestSuite2.class

    оба работают параллельно, используя multiForkingс помощью приведенного выше конфига.

Оба пакета содержат тестовые примеры пользовательского интерфейса, которые предназначены для проверки статуса платежа в песочнице,

Актуальная проблема : Песочница позволяет только 1 вход в систему за раз (сеанс истекает, если другой поток пытается проверить статус платежа)

Я хочу запустить метод подтверждения платежа синхронизированным способом, чтобы проверка платежа могла выполняться однимпоток за один раз (пока другой поток ожидает).

С уважением Никс

1 Ответ

0 голосов
/ 23 февраля 2019

Прежде всего, для примера, который вы показали, Gradle работает так, что запускает новую JVM, отдельный процесс для каждого TestSuite.Это означает, что это не проблема многопоточности, а скорее проблема синхронизации процессов.

Вам потребуется создать некоторую блокировку для ваших процессов.Самым простым способом, который я могу придумать, является создание каталога блокировки в файловой системе.

Напишите служебный метод, который проверяет, существует ли каталог блокировки, и, если он есть, подождите, пока он исчезнет,Продолжить.Если каталог отсутствует, создайте каталог.Получите доступ к изолированной программной среде оплаты, только если вы создали каталог.

Имейте в виду, что в зависимости от вашей реализации могут возникнуть условия гонки.Но это не должно быть проблемой на практике.Поскольку тесты пользовательского интерфейса довольно медленные, вы, вероятно, не будете запрашивать частоту, достаточно высокую, чтобы когда-либо заметить это.

...