問題タブ [mockito]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - クラスを取るコンストラクタでオブジェクトをモックする方法は?
これはテストです:
これらはクラスです:
これはエラーです:
ここで質問があります: PowerMock にどのコンストラクターを探すべきかを理解させるにはどうすればよいでしょうか?
問題のある行はsuppress
. それがエラーの原因です。
java - Spring JUnit と Mockito - SimpleJdbcTemplate
SimpleJdbcDaoSupport を拡張するクラスが与えられた場合、SimpleJdbcTemplate をどのようにモックできますか?
次に、Mockito を使用します。
モックされた JdbcTemplate が注入されますが、dao クラスは SimpleJdbcTemplate に依存してクエリを作成し (オブジェクトへのマッピング用)、SimpleJdbcDaoSupport によって内部的に構築されるため、JdcbTemplate をモックしても SimpleJdbcTemplate には影響しません。パブリック セッターがなく、SimpleJdbcTemplate を信頼する唯一の方法は、そのメソッド getSimpleJdbcObject() に依存することです。
mocking - カスタムMockitoArgumentMatcherからカスタムメッセージを生成するにはどうすればよいですか?
私はArgumentMatcherを書いていますが、比較の本質は次のようになります。
残念ながら、合格しなかった場合、Mockitoは失敗したと言ってくれます。「値が一致しません」や「名前が一致しません」などのカスタムメッセージを追加したい(もちろん、もっと情報を提供したいのですが、この単純なケースを理解できるまで、何をするのがポイントですかそれ以上)。
以前(Mockitoを使用する前)、マッチャーには2つのメソッドがあったことを覚えています。1つは一致をチェックし、もう1つは失敗メッセージを生成します(両方のメソッドを作成するのは面倒でしたが、今は2番目のメソッドがありません)。
これを行う方法はありますか?どんな助けでも大歓迎です!
mocking - Mockitoを使用してJava3Dをモックする良い方法は何ですか?
たとえば、単体テスト用に Java3D クラスをモックアウトしようとしています。
また
残念ながら、VirtualUniverse (Canvas3D からも参照されます) には、メソッドを含む MasterControl への静的参照があります。
モック中に呼び出され、外部ライブラリをロードしようとしますが、これはまさに私が避けようとしているものです。
Java3D フレームワークを利用するアプリケーションに適用されるモックの一般的なアプローチとして、人々が何を使用しているかを聞きたいと思います。特に、ユニバースを処理するための満足のいくアプローチを見つけた場合はなおさらです。
アップデート:
この質問をした後、いくつかのことが起こりました。1 つは、Java3D と JavaFX の状態について詳しく学んだことです。Java3D に関する作業は、JavaFX に集中することを優先して、現在停止されているようです。また、JavaFX には、現時点で 2011 年第 3 四半期に Java API が含まれる予定です。私たちの既存のコードはシーングラフ ベースなので、他のシーングラフ パラダイム ツールを探し回ったところ、うまく機能しそうな jMonkeyEngine (jME) にたどり着きました。
jME のアプリケーション クラスは構成よりも継承を優先しますが (com.jme3.app.SimpleApplication を参照)、デリゲータを継承階層に挿入するのは簡単だったので、より TDD 対応の方法で独自のアプリケーションを作成できました。また、jME チームは静的動作の使用を回避することに長けています。これは、UT のコンポーネントをモック アウトする作業に役立ちます。
したがって、私は、彼が代表団の考えに賛成しているという根拠に基づいて、Zsolt の回答を受け入れます。
mockito - Mockito がマッチャーを 2 回呼び出すのはなぜですか?
次のような Mockito テストがあります (もちろん単純化されています)。
基本的に、このテストは、Blah.create()
が呼び出されたときにByteBuffer
、特定のデータを含む をに書き込むことをアサートしようとしていFileChannel
ます。
このテストを実行すると、マッチャーが 2 回呼び出されます。これにより、BufferUnderflowException
.
これで、呼び出しの開始時にマッチャーにバッファー位置を保存matchesSafely
させ、最後に (finally ブロックで) その位置に戻すことでこれを回避できましたが、私のマッチャーはそうすべきではないように思えます。 2回呼び出されます。
誰でもこれに光を当てることができますか?
編集#1:
チャネルに渡される前にバッファーが反転されることに注意してください。そのため、位置は 0 であり、制限は書き込まれたデータの量に設定されます。
テストをデバッグしましたが、マッチャーは間違いなく 2 回呼び出されています。
バッファーを最初にマークし、最後にリセットすることでテストに合格できるmatchesSafely()
ので、マッチャーの 2 回目のパスで同じデータが読み取られます。これにより、マッチャーが 2 回呼び出されていることも確認できます。
編集#2:
したがって、これは Mockito フレームワークの予想される動作のようです。振り返ってみると、グローバル状態を変更するため、私のマッチャーは少し貧弱です。マッチャーを変更して、開始位置を記録し、matchesSafely()
メソッドの最後でそこに戻るようにしました。グローバル状態の変更を保存するため、これはおそらく良い考えです。私は同じ理由でmark()
andを使用しません。reset()
java - Liferay Junit-Mockito テスト
JUNIT と Mockito を使用して、liferay ポートレット プラグイン コードをテストしようとしています。現在、サービスの実装をモックして、モック データを返し、機能をテストしています。
私が直面している問題は、PropsUtil.get("someKey") としてプロパティを取るいくつかのコードをテストする必要があることですが、スタンドアロン JUNIT テストとして実行すると、PropsUtil はどのプロパティ ファイルからも読み取れません。ソースコードを変更せずに、liferay プロパティ (portal*.properties) ファイルからテストを読み取らせる方法はありますか?
unit-testing - Mockitoで検証する正しい方法
メソッドがあります-テストしたいクラス(クラスA)のgetSomethingAmount()。この getSomethingAmount() メソッドのロジックは、クラス A の初期化時にコンストラクターに渡される Set bSet に依存します。たとえば、Set bSet に Status.OK の 2 つのオブジェクトが含まれている場合、getSomethingAmount() は 2 を返す必要があります。この状態を Mockito で正しく確認するにはどうすればよいですか?
ここで、2 つの B クラス型オブジェクトをスタブし、それらを bSet に入れ、JUnit アサーションで getSomethingAmount() メソッドの結果をアサートします。動作しますが、「真の」Mockito のようには見えません。
java - voidメソッドをテストするMockito
テストしたい次のコードがあります。
メソッドacceptFromOfficeが実際にステータスを0に設定し、メッセージを永続化してから、ステータスを1に変更してから、再度永続化することを確認する必要があります。
Mockitoを使用して、次のことを試みました。
私は実際、ここで検証により、異なるメッセージオブジェクトの状態でmakePersistentメソッドを2回呼び出すことを検証することを期待しています。しかし、それは失敗します
引数が違います!
手がかりはありますか?
java - Mockitoを使用する場合のmock()とstub()の違いは何ですか?
どちらも同じことをしているようです。なぜ一方を他方よりも優先して使用するのでしょうか。
gwt - GWTプロジェクトでのMockitoの使用
私はMockitoを初めて使用し、GWTプロジェクトで記述されたサンプルテストクラスを実行しています。
一部の場所では、モックを取得するために使用Mockito.mock(SecurityDao.class)
しましたが、同じテストクラスの他の場所では、「new」キーワードを使用して他のクラスをインスタンス化しました。
クラスをモックするには、Mockito.mockのパラメーターとしてインターフェースを渡す必要があり、クラスがインターフェースを実装していない場合は、「new」キーワードを使用してクラスをインスタンス化する必要があると思います。
これは正しいですか?Mockito.mockを実際に使用する必要があるのはいつですか?
ありがとう