2016-09-20 8 views
0

今、クラスAをテストすることにしました。私はAのメソッド(Amethodと呼ばれる)をテストするとき、AmethodはBクラスの別のメソッド(Bmethodと呼ばれます)を呼び出します。このBメソッドでは、BmethodはインターフェイスCのメソッドを呼び出します。 それは単に依存ツリーが好きです:依存関係が複雑な場合、どのレベルで依存関係を模擬すべきですか?

A->B->C 

私は、私はモックすべき1つのクラスAのAmethodのユニットテストを行うにはBまたはCをgmockを使用していますか?

+0

LoDのような優れたプログラミング実践については、demeterの法則を読んでください。このようなケースを防ぐのに役立ちます。 - https://en.wikipedia.org/wiki/Law_of_Demeter – PiotrNycz

答えて

0

たとえば、プリセット値を返すようにセットアップBmethodのようにSUT(あなたのケースではA)の依存関係(あなたの場合はB)を擬似する必要があります。 Bなどをテストするときは、Cを嘲笑することだけを心配してください。

+0

私はあなたのことを知っています。しかし、Cを嘲笑することはgmockを使ってBを嘲笑するよりずっと簡単です。 Bクラスは具象クラスであり、Bmethodは非仮想メソッドであるためです。 Cは仮想メソッドを持つインタフェースです。 – XHLin

+0

あなたはテスト容易性のためにBの契約をインタフェースに抽象化することを考えましたか? –

関連する問題