как остановить объединение старых файлов пактов с новыми, не полагаясь на то, что мои коллеги знают, как очистить папку target/pacts?

Pact объединяет договоры на уровне файла, это отлично подходит для объединения договоров из нескольких тесты, но не так хорошо, когда вы хотите изменить и повторно запустить тест без очистки папки target/pacts.

Конфигурация запуска junit по умолчанию в intellij не очищает целевую папку перед запуском тестов; Я знаю, что могу использовать maven для очистки/удаления файлов вручную, но это означает, что любой, кто запускает эти тесты локально, должен знать, как запускать их определенным образом.

Я хочу объединить пакты из нескольких тестов, поэтому я не хочу отключать объединение. Я попытался реализовать метод before, который удаляет файлы из папки pact, если они существуют, но это было дерьмово.

Я рассматриваю возможность установки папки пактов во временный каталог, который удаляется после запуска тестов, но это может помешать отправке новых пактов брокеру, и я не хочу удалять папку слишком рано/часто и в конечном итоге с отсутствующими договорами. Также полезно иметь возможность видеть файлы в конце, поэтому их автоматическое удаление не идеально.

Есть ли хороший способ предотвратить слияние старых пактов с новыми, не полагаясь на то, что люди просто знают, что им нужно удалить старые файлы пактов перед запуском измененного теста?


person Jenny Messer    schedule 19.02.2020    source источник
comment
С моей точки зрения, это звучит так, будто ваши тесты не предназначены для повторного запуска. Я бы пересмотрел эту идею, иначе вы не сможете повторно запустить свои тесты из своей IDE, что обычно является плохой идеей... и нарушает идею модульных тестов...   -  person khmarbaise    schedule 19.02.2020


Ответы (1)


Почему для вас это актуальная проблема? Например, да, файл пакта временно больше, чем должен быть, но каковы фактические последствия?

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

В качестве альтернативы, если вы все используете одну и ту же IDE, вы можете создать специальную конфигурацию IDE и зарегистрировать ее в репозитории, который очищает каталог перед запуском любой цели/теста.

person Matthew Fellows    schedule 20.02.2020
comment
прямое влияние заключается в том, что никто из тех, с кем я работаю, не хочет заключать договоры, потому что они имеют репутацию запутанных. Ваше знакомство с pact обычно представляет собой написание потребителя с использованием DSL, если вы не знаете, как очистить папку pact, и вы просто возитесь с DSL, чтобы увидеть, какие файлы генерируются, вы получите испорченный файл, и вы сильно запутаетесь. - person Jenny Messer; 21.02.2020
comment
ex1: я создаю договор с массивом X, когда он должен быть строкой. Меняю без очистки папки pact. Массив X не перезаписывается строкой X, поэтому файл пакта продолжает содержать только массив. пример 2: я создаю 2 пакта с состояниями A и B, но тест написан неправильно, поэтому в файл успешно записывается только последний пакт. Сначала я пишу тест A, создавая файл. нет чистоты. Когда я запускаю тесты A и B вместе, результирующий файл содержит оба пакта, проверочные тесты пройдены. Когда задание CI запускает тесты с чистой целью, результирующий пакт содержит только состояние B. - person Jenny Messer; 21.02.2020
comment
Я знаю, о чем вы говорите, но файл пакта — это просто артефакт теста. Вы разделяете заботу о самом тесте, а не о побочном эффекте создаваемого файла. Это похоже на просмотр результирующего байт-кода вместо исходного кода Java, который во всех смыслах и целях является ценным. При этом я все же хотел бы знать, есть ли другой способ. Как вы ожидаете, что это сработает? - person Matthew Fellows; 22.02.2020