2012-02-29 20 views
3

Webアプリケーションでユニットテストを実装しようとしていて、その一部がThreadLocalを使用しています。スレッドローカルを使用するアプリケーションのユニットテストの部分

私はそれをテストする方法を理解できません。

Junitは、すべてのテストを1つのスレッド、つまりメインスレッドで実行しているようです。

ThreadLocal変数に異なる値を割り当てる必要があります。

誰もこのようなシナリオに遭遇しましたか?あなたは何をお勧めしますか?

答えて

1

私は単に私のユニットテスト内のスレッドを開始します。

Futuresを使用し、ThreadPoolExecutorを使用して実行することをおすすめします。

+0

テストのトランザクションの性質に影響はありませんか?私の理解は、トランザクションが現在の実行スレッドにバインドされていることです。私は春のトランザクション単位テストについて話しています。 – Sudarshan

0

それぞれのテスト方法をタイムアウト(つまり、@Test(timeout=100))で飾るだけで十分でしょう。 Test::timeoutの "THREAD SAFETY WARNING"に注意してください。特に@BeforeClassと@After注釈を使用する場合は注意してください。

関連する問題