Мои тесты интеграции выполняются последовательно, но я хочу распараллелить их. Проблема в том, что все они устанавливают и разрывают одну и ту же строку базы данных, поэтому, если они выполняются параллельно, их данные будут исчезать посреди них, используя ее, когда другой тест очистится.В JUnit, как я могу получить список всех тестов интеграции?
Я планирую изменить это, сделав его таким, чтобы каждый тест устанавливал и разрывал уникальную строку на каждый тест, чтобы они не мешали друг другу. Я начал процесс, превратив каждый идентификатор теста в константу с таким же именем, как ROW_ID
. Но у нас много тестов, и было бы легко пропустить один из них, и я также не хочу, чтобы люди добавляли в будущем дублирующие значения ROW_ID
, поэтому я подумал, что было бы неплохо написать тест для моих тестов.
Вот как я предполагаю, что это сработает: Итерируйте все классы IntegrationTest, используйте отражение, чтобы получить значение своего поля ROW_ID
, поместите его в структуру данных, а затем проверьте наличие дубликатов. Моя проблема в том, что я не знаю, как итерировать все классы IntegrationTest. Все они имеют общую схему именования «* IntegrationTest». Может ли кто-нибудь помочь мне с этим шагом?
И если есть лучший способ выполнить то, что я пытаюсь сделать, во что бы то ни стало дать мне это как ответ.
Вместо того, чтобы вручную указывать идентификатор строки, почему бы вам не использовать последовательность базы данных? –
@MarlonBernardes Это хорошая идея. Возможно, я смогу это сделать. –
Или, возможно, создать поточно-безопасный метод, который увеличивает и возвращает счетчик id. Что-то вроде 'Long row_id = SequenceNumberGenerator.nextVal()' –