void process()
というメソッドを持つクラスSomeClass
があるとします。このメソッドの実装は、new Thread(this::someOtherMethod).start
のようなsmthです(特定のスレッドではsomeOtherMethod
のみを実行する必要があります)。この方法のためのユニットテスト書き留めたメソッドの実行を待って
:
SomeClass class= new SomeClass(anObjectToWorkWith); class.process(); assertEquals(expectedObj, anObjectToWorkWith)
を私はprocess
方法は、特定のスレッドで実行されるようprocess
方法が完了する前に、assertEquals
命令が呼び出されることを、理解しています。
したがって、私は質問があります:メソッドの実行を待って、assertEquals
が必ずprocess
の後に呼び出されるようにする方法がありますか?
ありがとうございます。
P.S. Thread.sleep
メソッドまたはSomeClass
がRunnable
インターフェイスを実装することを意味するソリューションを使用するソリューションを提案しないでください。これらのソリューションはタスクに準拠していません。
class.process()を呼び出しスレッドがt.join()を呼び出すことができるスレッドtインスタンスを返すようにした場合。それはサブスレッドが終了するのを待つでしょう。 – bhspencer
@bhspencerことは、SomeClassクラスが 'void process()'メソッドを使ってインタフェースを実装していることです。そのため、私はそのような解決策では制限されています。 – draft
その場合、SomeClassのインスタンスにwait()という別のメソッドを追加できます。スレッドをSomeClassのメンバーにし、wait()を呼び出します。t.join(); – bhspencer