問題タブ [easymock]
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.
unit-testing - Spring を使用して EasyMock モックを注入すると ClassCastException が発生する
単体テストで EasyMock モックを挿入するように Spring を取得しようとしています。
私のapplicationContext.xmlには、これがあります:
私の単体テストでは、これがあります:
テストを実行しようとすると、次のスタック トレースが表示されます。
私はSpringとEasyMockの両方にまったく慣れていませんが、EasyMockがEasyMockのインスタンスであると想定しているものでメソッドを呼び出そうとしたためにエラーが発生したようですが、実際にはSpringによって作成された動的プロキシです。私が理解しているように、動的プロキシはインターフェイスで定義されたメソッドのみを実装します。この場合は、サービスのインターフェイスです。
私が理解していないのは、私が読んだこと(ここでも)から、少なくとも達成しようとしていることは可能であるように思われるということです。
私の質問は、私がしていないこと、または間違っていることは何ですか?
java - EasyMockで複数のインターフェースを実装するモックオブジェクトを作成することは可能ですか?
EasyMockでいくつかのインターフェースを実装するモックオブジェクトを作成することは可能ですか?
たとえば、インターフェイスFoo
とインターフェイスCloseable
?
Rhino Mocksでは、モックオブジェクトを作成するときに複数のインターフェイスを提供できますが、EasyMockのcreateMock()
メソッドは1つのタイプしか取りません。
Foo
との両方を拡張する一時的なインターフェースを作成し、それをモックするというフォールバックに頼ることなく、EasyMockでこれを達成することは可能Closeable
ですか?
java - easymock を使用して、void メソッド呼び出しを繰り返す
私はeasymockが初めてです。
メソッドの 1 つが void メソッドであり、未知の (そして多数の) 回数呼び出されるサービスをモックしようとしています。任意の数の呼び出しが許可されるように指定するにはどうすればよいですか?
void 以外の戻り値の型を持つメソッドに対してそれを行う方法を知っています。
ありがとう
java - EasyMock を使用して具象クラスをモックする
EaskMock を使用して具体的なクラスをモックすることは可能ですか? もしそうなら、どうすればいいですか?
java - easymock でオブジェクト タイプを検証する
easymock の世界に入ったばかりです。easymock はインターフェイスのオブジェクトをモックするだけですか? したがって、理解するために、Javaで一意のバウチャーを生成するクラスを作成しました。明らかに、アサートで使用するために生成される値を知ることができません。生成されたバウチャーが長いタイプであることを確認するにはどうすればよいですか?
ここに関数があります
ここにテストクラスがあります
これはあなたには素晴らしいように見えるかもしれませんが、私はこれを行う方法についてまだ混乱しています助けてくれてありがとう
java - easymock - マッチャーと複数の呼び出し
以下は、独自のマッチャーを使用して作成したテストです。この場合、標準のマッチャーを使用できることはわかっていますが、実際のコードではもっと複雑なマッチャーが必要です。
テストに合格 - VG にチェックを入れます。問題は、IArgumentMatcher.matches()
false を返すメソッドへの余分な呼び出しがあるように見えますが、テストに合格することです。
私が得る出力は次のとおりです。
問題は、なぜ MISMATCH 行が表示されるのかということです。何か間違ったことをしたのでしょうか?
テストコードは次のとおりです。
frameworks - 模擬フレームワークと高いテストカバレッジは重要ですか?
EasyMockなどのモックフレームワークを使用すると、ダミーの依存関係を簡単にプラグインできます。そうは言っても、特定のコンポーネントでさまざまなメソッドがどのように呼び出されるか(およびその順序)を確認するためにそれらを使用することは、私には悪いように思えます。動作をテストクラスに公開するため、本番コードの保守が困難になります。そして、私は本当にその利点を見ていません。精神的には、重いボールに鎖でつながれているような気がします。
私はむしろ、インターフェイスに対してテストし、テストデータを入力として提供し、結果を表明するのが好きです。さらに良いことに、特定のプロパティを検証するためにテストデータを自動的に生成するテストツールを使用します。たとえば、リストに1つの要素を追加し、それを削除すると、すぐに同じリストが生成されます。
私たちの職場では、テストカバレッジを提供するハドソンを使用しています。残念ながら、すべてがテストされていることに盲目的に取りつかれるのは簡単です。メンテナンスモードでも生産性を高めたいのであれば、すべてをテストするべきではないと強く感じています。1つの良い例は、Webフレームワークのコントローラーです。一般に、ロジックはほとんど含まれていないはずなので、コントローラーがそのようなメソッドを呼び出すモックフレームワークを使用してテストし、そのようなメソッドを特定の順序でテストすることは、私の正直な意見では無意味です。
親愛なるゾアース、これについてあなたの意見は何ですか?
java - 単体テスト - equals をオーバーライドしないオブジェクトを使用したメソッド呼び出しを確認する
これは、モック オブジェクトを使用して Java クラスを単体テストする方法に関する一般的な質問です。
この例で問題を要約できます。
MyInterface.java というインターフェイスと、equals() をオーバーライドしない「TwoString」オブジェクトがあるとします。
"TwoString.java"
"MyInterface.java"
次に、「MyClass.java」オブジェクトがあります。そのコンストラクターは、MyInterface の具体的な実装を受け入れます。
MyClass methodToTest() には、何らかの方法で TwoString オブジェクトを作成するロジックが含まれています。として作成されるとしましょう
したがって、 methodToTest() が呼び出されると、インターフェイス メソッドcallMe(TwoString twoString)に渡されるこの TwoString オブジェクトが作成されます。
私は基本的にインターフェースをモックしたいと思っています。このモックで MyClass オブジェクトを作成します。次に、モック メソッドが TwoString の特定のインスタンスで呼び出されることを確認します。
私はEasyMockを使用しています。これはJavaコードです
「MyClassTest.java」
ここで問題が発生します。呼び出しで期待している TwoString オブジェクト
TwoString.java は equals をオーバーライドしないため、 MyClass.methodToTest() で生成されたものとは異なります。
を使用して TwoString インスタンスの問題をスキップできます
しかし、インターフェイス メソッドが、文字列 1 として "a"、文字列 2 として "b" を含む TwoString の特定のインスタンスで呼び出されることを確認したいと思います。
この場合、TwoString オブジェクトは非常に単純で、equals メソッドをオーバーライドするのは簡単ですが、より複雑なオブジェクトをチェックする必要がある場合はどうすればよいでしょうか。
ありがとう
編集:
この例で読みやすくしようとします
???SomeObj = myObjList に含まれるデータを使用して myClass.run() によって作成されたオブジェクト。
SomeObj がサード パーティのライブラリから取得され、equals をオーバーライドしないとします。
その SomeObj の特定のインスタンスで taskExecutorMock.execute() メソッドが呼び出されていることを確認したい
myClass.run() が正しいインスタンスで taskExecutorMock メソッドを実際に呼び出していることをテストするにはどうすればよいですか
java - Easymockの部分的なモック(EasyMock ClassExtension)、良いか悪いか?
EasyMockを使用してかなりの数のモックオブジェクトを作成しました。しかし、部分的なモックを書くのは時間がかかることが多く、「正しい」とは感じません。
私がモックしようとしているクラスには複数の懸念事項が1つにまとめられているため、設計上の誤りだと思います。したがって、懸念事項を分離するために、別個のクラスを作成する必要があります。
どう思いますか?部分的にモックするのは良いことですか、悪いことですか?そして、良い/悪い場合、なぜですか?いくつかのメソッドをモックしたいだけなので、オブジェクトをモックできないことに気付いた場合、何を提案しますか?