2016-10-06 7 views
3

スレッドにデーモンフラグを設定することを忘れたコードがあります。したがって、mainの方法はこれまでに完了しません。私は最終的にそれを追跡しますが、私は疑問に思っています.JUnit(またはtestngなどの)テストでこのような場合に不平を言う可能性があるように、非デーモンスレッドの存在を反映する方法はありますか?これらのテストフレームワークはSystem.exitを編成して余分なスレッドがハングとして現れないように注意してください。Junitテストでリークしたスレッドを検出できますか?

+0

これはどのように報告しますか?そのようなスレッドが存在するか、スレッドが作成された場所に何らかのピンポイントがありますか? – Brick

+0

ちょうどその存在。 ThreadMXBeanはdaemonフラグを表示しません。 – bmargulies

答えて

2

あなたは、すべての実行中のスレッド(Get a List of all Threads currently running in Java)のリストを取得することができます。

Set<Thread> threadSet = Thread.getAllStackTraces().keySet(); 

次にあなたがThread.isDaemon()を呼び出して書き込みいくつかのテストでは、リストを反復処理することができます。おそらく、JVMまたはJUnitフレームワークに対応するスレッドをいくつかスローする必要がありますが、その名前のようにスレッドの他の側面を調べることで可能でしょう。

関連する問題