Webアプリケーションでユニットテストを実装しようとしていて、その一部がThreadLocalを使用しています。スレッドローカルを使用するアプリケーションのユニットテストの部分
私はそれをテストする方法を理解できません。
Junitは、すべてのテストを1つのスレッド、つまりメインスレッドで実行しているようです。
ThreadLocal変数に異なる値を割り当てる必要があります。
誰もこのようなシナリオに遭遇しましたか?あなたは何をお勧めしますか?
Webアプリケーションでユニットテストを実装しようとしていて、その一部がThreadLocalを使用しています。スレッドローカルを使用するアプリケーションのユニットテストの部分
私はそれをテストする方法を理解できません。
Junitは、すべてのテストを1つのスレッド、つまりメインスレッドで実行しているようです。
ThreadLocal変数に異なる値を割り当てる必要があります。
誰もこのようなシナリオに遭遇しましたか?あなたは何をお勧めしますか?
Groboutilsは、マルチスレッドテストの実行をサポートしています。これにより、ThreadLocal変数をテストすることができます。
http://groboutils.sourceforge.net/testing-junit/using_mtt.html
私は単に私のユニットテスト内のスレッドを開始します。
Futures
を使用し、ThreadPoolExecutor
を使用して実行することをおすすめします。
それぞれのテスト方法をタイムアウト(つまり、@Test(timeout=100)
)で飾るだけで十分でしょう。 Test::timeoutの "THREAD SAFETY WARNING"に注意してください。特に@BeforeClassと@After注釈を使用する場合は注意してください。
テストのトランザクションの性質に影響はありませんか?私の理解は、トランザクションが現在の実行スレッドにバインドされていることです。私は春のトランザクション単位テストについて話しています。 – Sudarshan