Модульное тестирование частей приложения, использующих Thread Local - PullRequest
4 голосов
/ 29 февраля 2012

Я пытаюсь реализовать модульное тестирование в веб-приложении, и некоторые его части используют ThreadLocal .

Я не могу понять, как его протестировать.

Похоже, что Junit выполняет все свои тесты, используя один поток, а именно основной поток.

Мне нужно иметь возможность присваивать различные значения моей переменной ThreadLocal.

Кто-нибудь сталкивался с таким сценарием? Что вы, ребята, рекомендуете?

Ответы [ 3 ]

1 голос
/ 29 февраля 2012

Я бы просто запустил темы в моем модульном тесте.

Я рекомендую вам использовать Futures и выполнять их, используя ThreadPoolExecutor.

1 голос
/ 29 февраля 2012

Groboutils поддерживает запуск многопоточных тестов, что позволит вам тестировать переменные ThreadLocal.

http://groboutils.sourceforge.net/testing-junit/using_mtt.html

0 голосов
/ 19 сентября 2016

Может быть достаточно украсить соответствующие методы тестирования тайм-аутом, т.е. @Test(timeout=100). Обратите внимание на «ПРЕДУПРЕЖДЕНИЕ ПО БЕЗОПАСНОСТИ РЕЗЬБЫ» в Test :: timeout , особенно при использовании аннотаций @BeforeClass и @After.

...