t.me/atinfo_chat Telegram группа по автоматизации тестирования

Не задаётся пропертя -Dselenide.baseUrl=http://site.com, а через Configuration.baseUrl задаётся

Теги: #<Tag:0x00007f9b025a9bd8> #<Tag:0x00007f9b025a9a48>

Выполняю команду: gradle gsmui -Dselenide.baseUrl=http://gsmserver.com
Тесты стартуют на http://localhost:8080/
если в таске gsmui вывести пропертю selenide.baseUrl - то выводится указанная урла
А если уже в BaseTest вывести selenide.baseUrl - то выводится null

Если в абстрактном классе BaseTest(который все классы с тестами наследуют) в методе с аннотацией @Before указать Configuration.baseUrl="http://gsmserver.com"; - то тесты стартуют на соответствующем сайте.

Что я делаю не так?

Поискал в документации, не нашел пока как с помощью проперти вставить baseUrl, разработчик selenide в своих примерах использует Configuration.baseUrl
Я например делаю в своих тестах так:
String projectUrl = System.getProperty(“project_url”);
И дальше уже использую:
open(projectUrl + “/index.php”); например

Можно соответственно сделать: Configuration.baseUrl = System.getProperty(“project_url”);
и использовать.

Чтобы передать системное свойство снаружи в тест, нужно добавить в build.gradle такую строку:

test {
  systemProperties['selenide.browser'] = System.getenv()['selenide.browser']
}

(или как-то так)

2 Симпатий

или maven-ом, в строке запуска указывается -Dproject_url=http://url.com test

Спасибо, вот это меня и инетерсовало, потому что явно системную проперти тесты не видели, а гредл видел - хотя странно это

Завтра уже попробую

Нет смысла создавать дополнительную пропертю, если есть стандартная baseUrl которая используется по умолчанию в селениде и к ней приставляется всё что есть в других open()`ах

Configuration.baseUrl - так и было у меня всегда, это работало, я это написал изначально.

Суть в том что я изначально не знаю на какой урле запускать тесты, нужно урлу передавать как “параметр” при запуске теста

Получилось только через такой костыль: systemProperties(‘selenide.baseUrl’: System.getProperty(“url”))

Но вот почему работает через костыль этот, а не по прямому через задание переменной из консоли -Dselenide.baseUrl?

Ну, это больше вопрос к тому, как работает Gradle.
Предполагаю, не передаётся потому, что -D в консоли относится к самому градлу, а тесты запускаются в отдельной JVM, поэтому у них свой набор system properties. Теоретически это правильно, иначе свойства самого градла могут повлиять на работу тестов. Например, может ведь быть, что градлу выделено мало памяти, а тестам много памяти.

Тоже так предполагал, видимо всё таки так и есть