Mockito Spy:同じクラスの例でメソッドをock笑する
mockito spy:同じクラスの例でメソッドをmock笑する
この例は、モッキートのspy
機能を使用してクラス内の特定のメソッドを模倣する方法を示しています。 MyClass
:
public class MyClass { public int add(int a, int b) { return a + b + internalMethod(); } private int internalMethod() { return 5; // This is the method we want to isolate } public int anotherMethod() { return 10; } }
というクラスがあるとしましょう。スパイを使用して、add
:internalMethod
internalMethod
import org.junit.jupiter.api.Test; import org.mockito.Mockito; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; public class MyClassTest { @Test void testAddMethod() { MyClass myClassSpy = spy(MyClass.class); when(myClassSpy.internalMethod()).thenReturn(10); // Mock the internal method int result = myClassSpy.add(2, 3); assertEquals(15, result); // 2 + 3 + 10 = 15 } }
を使用して、MyClass
をスタブにして10を返し、その動作をwhen(myClassSpy.internalMethod()).thenReturn(10);
メソッドのテストから分離します。次に、モックされたinternalMethod
。add
add
を使用して、internalMethod
メソッドが正しく動作することを確認します。モッキートの機能を使用して、クラス内の特定のメソッドを分離してテストするにはどうすればよいですか? これは、特定の方法を選択的にock笑しながら、ほとんどの方法の実際の実装を保持できることを意味します。 それを使用するには、
メソッドを使用して、ockしたい方法の動作を指定します。 たとえば、spy
これにより、スパイオブジェクトが作成されますspy
。 Mockito.spy(yourObject)
onwhen()
への呼び出しは10を返します。他のすべてのメソッドは実際の実装を使用します。これにより、特定の方法の動作をクラスの他の部分から単独で隔離したターゲットテストが可能になります。 mockしたい方法の動作を定義するには、
MyClass myClass = new MyClass(); MyClass myClassSpy = spy(myClass); when(myClassSpy.internalMethod()).thenReturn(10); // Mock only internalMethod
同じクラス内のテスト方法をテストする際のモックと比較してモック酸スパイを使用する潜在的な落とし穴は何ですか?myClassSpy
internalMethod
スパイは実際の実装との相互作用をテストする利点を提供しますが、それらはいくつかの潜在的な落とし穴を導入します:myClassSpy
>>
-
意図しない副作用:スパイは元の実装を保持しているため、詰められていないメソッドの副作用は引き続き発生します。これにより、テスト中に予期しない動作が発生し、テスト中のユニットを分離することが困難になります。 オブジェクトの状態を変更すると、返品値をmock笑しても、その変更がまだ発生します。
internalMethod
- デバッグが難しい:予期しない動作が発生した場合、エラーのソースを特定することは困難です。これは、テスト中の方法の問題ですか、それとも非ロックされていない方法からの副作用ですか? 機能が同じままであっても、実装の変更はテストを破る可能性があります。
- 不必要な複雑さ:単純なモックを使用してメソッドを効果的にテストできれば、スパイの複雑さを追加する必要はありません。 モッキングは一般によりシンプルで、予期しない副作用が発生しやすくなります。
- 単体テスト中に内部メソッドコールを扱うときにモックよりモックスパイを選択する必要がありますか?
以上がMockito Spy:同じクラスの例でメソッドをock笑するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。
