Добавление ошибки в SoftAssertions из нескольких потоковJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Добавление ошибки в SoftAssertions из нескольких потоков

Сообщение Anonymous »

Код: Выделить всё

SoftAssertions
в AssertJ полезен, когда мне нужно убедиться, что несколько условий выполняются или собирают как можно больше ошибок:

Код: Выделить всё

        final SoftAssertions softly = new SoftAssertions();

softly.assertThat("foo").hasToString("foo");
softly.assertThat("bar").hasToString("bar");

softly.assertAll();
Тем не менее, ситуация уже не выглядит такой радужной, когда дело касается многопоточной среды, когда мне нужно собирать ошибки, возникающие в нескольких потоках. Например, этот код не работает, поскольку изменения, внесенные в экземпляр SoftAssertions из других потоков, могут быть не видны из основного потока:

Код: Выделить всё

        final SoftAssertions softly = new SoftAssertions();

final ForkJoinPool forkJoinPool = ForkJoinPool.commonPool();
forkJoinPool.execute(() -> {
softly.assertThat("foo").hasToString("foo");
});
forkJoinPool.execute(() -> {
softly.assertThat("bar").hasToString("bar");
});

softly.assertAll();
Каков наилучший подход к решению вышеуказанной проблемы?

Защита SoftAssertions с помощью синхронизированного блокировать везде, где я их использую, не кажется хорошим решением (особенно с точки зрения читаемости теста).

Подробнее здесь: https://stackoverflow.com/questions/619 ... le-threads
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»