Size: a a a

QA — Автоматизация

2020 November 18

AN

Alex Nemoy in QA — Автоматизация
Алексей
у вас самодельная авторизация, или гугловая / обычный oauth2 ?
а как определить -  бек стороння разработка - у нас только фронт - и описание апи
источник

А

Алексей in QA — Автоматизация
Moiseev Daniil
привет всем) Получилось так, но тут другая проблема, мне надо что бы классы пускались паралельно, а тесты внутри них последовательно, я выставил вот такие параметры.
         <properties>
           <configurationParameters>
             junit.jupiter.execution.parallel.enabled = true
             junit.jupiter.execution.parallel.mode.default = same_thread
             junit.jupiter.execution.parallel.mode.classes.default = concurrent
             junit.jupiter.execution.parallel.config.strategy=fixed
             junit.jupiter.execution.parallel.config.fixed.parallelism=5
           </configurationParameters>

Он у меня запускает 5 потоков, запускает сначала beforeAll мой через Extension, но тестовые данные создаются какое то время, а остальные потоки не ждут, когда закончится beforeAll, можно как то красиво настроить ожидание?
наиболее простой вариант - добавить ожидание флага  started
источник

А

Алексей in QA — Автоматизация
соотв остальные потоки встанут в блокировку пока он не будет тру
источник

MD

Moiseev Daniil in QA — Автоматизация
Алексей
наиболее простой вариант - добавить ожидание флага  started
Я вот так попытался сделать, иногда зависает(
      while(!finished) {
           if (!started) {
               started = true;
               Configuration.baseUrl = returnUrl();
               createTestData();
               getStore(extensionContext).put(TESTRAIL_REPORT, new CloseableOnlyOnceResource());
               extensionContext.getRoot().getStore(GLOBAL).put("any unique name", this);
           }
       }

public static void createTestData() {
       createOrganizations();
       createSubdivisions();
       createPersons();
       createUsers();
       createDefectCategories();
       createDefects();
       createWorkTypes();
       createEntrancesLegalPerson(ADDRESS_ID, defectProperties);
       finished=true;
       loggerInfo(CLASS_NAME,String.valueOf(finished));
   }
источник

А

Алексей in QA — Автоматизация
как там в джюните это я не помню,возможно достаточно сделать блок синхронным
источник

А

Алексей in QA — Автоматизация
идеи нет под рукой, примерно так:
synchronized(this){
    if (!started) {
               started = true;
               Configuration.baseUrl = returnUrl();
               createTestData();
               getStore(extensionContext).put(TESTRAIL_REPORT, new CloseableOnlyOnceResource());
               extensionContext.getRoot().getStore(GLOBAL).put("tests_configuration", this);
    }
}
started - сделать volatile
источник

MD

Moiseev Daniil in QA — Автоматизация
Алексей
идеи нет под рукой, примерно так:
synchronized(this){
    if (!started) {
               started = true;
               Configuration.baseUrl = returnUrl();
               createTestData();
               getStore(extensionContext).put(TESTRAIL_REPORT, new CloseableOnlyOnceResource());
               extensionContext.getRoot().getStore(GLOBAL).put("tests_configuration", this);
    }
}
started - сделать volatile
Не получается, они все равно все туда рвутся((
источник

MD

Moiseev Daniil in QA — Автоматизация
источник

MD

Moiseev Daniil in QA — Автоматизация
источник

MD

Moiseev Daniil in QA — Автоматизация
источник

А

Алексей in QA — Автоматизация
Moiseev Daniil
Не получается, они все равно все туда рвутся((
упс,
started = true;
поставь после
createTestData();
источник

А

Алексей in QA — Автоматизация
или вообще в конце блока
источник

А

Алексей in QA — Автоматизация
хотя без разницы. тут нужна идея и смотреть, как оно тот контекст дергает
источник

MD

Moiseev Daniil in QA — Автоматизация
куда ни ставь не работает
источник

MD

Moiseev Daniil in QA — Автоматизация
такое ощущение, что он тоже 5 инстансов создает и поэтому не считает эту функцию синхронной
источник

А

Алексей in QA — Автоматизация
Moiseev Daniil
такое ощущение, что он тоже 5 инстансов создает и поэтому не считает эту функцию синхронной
поэтому и надо смотреть, как оно там внутри сделано. или через ожидание флага
источник

MD

Moiseev Daniil in QA — Автоматизация
Через ожидание флага я пытался сделать через while, но он и там периодически почему то просто в вечный цикл заходит(
источник

А

Алексей in QA — Автоматизация
Moiseev Daniil
Через ожидание флага я пытался сделать через while, но он и там периодически почему то просто в вечный цикл заходит(
Разраба джависта на работе попроси помочь, думаю это будет быстрее всего. Там ничего сложного, думаю он быстро управится
источник

MD

Moiseev Daniil in QA — Автоматизация
спасибо большое)
источник

MD

Moiseev Daniil in QA — Автоматизация
Я просто не думал, что у меня одного такой случай, что надо создать тестовые данные перед тестами с паралелизацией)
источник