2016-09-23 23 views
1

私は単体テストに関して基本的な質問があります。あなたが単体テストを行うときには基本的にコードの単位をテストし、javaの場合は各メソッドをコードの単位として扱うことができます。私は単体テストメソッドを使うと、メソッドの機能をテストするために、別のメソッドへのすべての呼び出しを嘲笑しなければならないと考えています。以下は例です。私の理解が正しいかどうかを教えてください。Spring Boot APP - ユニットテスト

Iは、クラスAを有し、B及びC

クラスAメソッド1

クラスBは方法1を有しており、2

クラスCは、外部サービス呼び出しを行う方法1を有しています。

Class A.method 1-> Class B.method1 - > ClassB.method2 - >クラスC.method 1 - >外部石鹸サービス。

上記のシナリオでは、クラスAメソッド1をユニットテストしているときに、クラスB.method1レスポンスを疑似する必要がありますか?同様に、クラスB.method1を単体テストするとき、クラスB.method 2をモックする必要がありますか?私はこれが後で呼ばれている他の方法にも当てはまると信じています。

+0

私はあなたの質問が下降したのを見ました。おそらく、それは実際にSpring Bootに関連していないかもしれませんが、より一般的なUnit Testingの質問とpplは誤解を招くと考えていますか? –

+0

@ TonyLang誰かが過去10分間で約10件の投稿を棄権しました。彼らは私の質問の回答を下降させています。 –

+0

@PaulSweatte、あなたが投稿したリンクは、統合テストについて話すようです。 –

答えて

1

「私はユニットテストクラスメソッド1だとき、私はクラスB.method1を模擬すべきである」

とき、私、あなたが」「ユニット」

としてクラスAをテストしているので、私は、そう思いますユニットテストクラスB.method1は、クラスB.method 2を模倣する必要があります。 "

多分あなたはしたくないかもしれません。

B.method2がプライベートであれば、それはB.method2が公開されている場合は、B.method1はそれを呼び出しているという事実は、メソッドがあるため、別のクラスに分けることができることを示している可能性がありますロジックB.method1

の一部です。 method1とmethod2が抽象レベルにない可能性があります。

B.method1のテスト時にB.method2を模擬したい場合は、spyを使用できます。

+0

ありがとう@トニーラング! –

+0

私のクラスはユニットであり、私のメソッドではないのですか? –

+0

@PunterVickyWell、私は、各メソッドを1つの単位として考え、すべてのプライベートメソッドをテストするためにリフレクションを使用しました。それはうまくいっていない:) –

関連する問題