問題タブ [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.
java - Ivy を使用したクラスパスの問題
Ivy を使用して依存関係を管理していますが、easymock で問題が発生しています
私のivy.xmlファイルには次のものがあります:
次に、他のライブラリの依存関係に従います。他のライブラリが別のバージョンの easymock を使用している場合に、少なくとも私のライブラリが正しいバージョンを取得することを期待しています。
しかし、私が解決した後、Eclipseでは、easymockの2つのバージョン(1.2と2.5)があり、1.2が最初にリストされていることがわかります。
単体テストを実行すると、org.easymock.internal.IMocksBehavior を受け取る org.easymock.internal.RecordState のコンストラクターで java.lang.NoSuchMethodError が発生します。
これは、古いバージョンの EasyMock を使用していることを示唆しています。
どうすればこの問題を回避できますか?
java - EasyMock モック オブジェクトを取得して例外をスローする
EasyMock を使用して、多くの共同作業クラスの単体テストを作成中です。これらのクラスの 1 つ ( と呼びましょうFoo
) は、リモート サーバーへのネットワーク接続を開き、そのサーバーの XML 応答を解析して、残りのクラスが使用できるものにします。
現在、私のテストでは、すべてがうまく機能せず、リモート サーバーが稼働しており、期待どおりに XML を返すシナリオのみが含まれています。ただし、リモート サーバーがダウンした場合や、によって がスローされる原因となるその他の問題が発生した場合に何が起こるかをシミュレートできるように、モックを作成できれば幸いです。Foo
IOException
Foo
EasyMock API を見てみましたが、モックに例外をスローするように要求するメソッドのように見えるものは何も見当たりません。
ベースのテストは絶対に必要というわけではありませんが、EasyMock で可能かどうか興味があり、この方法で のパブリック コントラクトException
をテストすると便利だと思います。Foo
以前に EasyMock でこのようなことをした人はいますか?
参考文献
java - テストするためのリファクタリング
次のコードとほぼ同等のコードがあります。
これらのクラス(内部クラスまたは外部クラス)のどちらにも単体テストがなく、内部クラスにMyCallable
バグがあることがわかりました。上で示したコードの簡略化されたバージョンでは、バグは存在しません。
したがって、バグを修正することを決定し、の単体テストを実装するとしますMyCallable
。私の質問はこれです。MyCallable
内部クラスの単体テストをどの程度正確に記述しますか?
私自身の解決策は、最初にリファクタリングMyCallable
してConcreteThread
。MyCallable
は独自のファイルでパブリッククラスになり、内部クラスのプライベート変数へのアクセスに依存するのではなくConcreteThread
、DAO、Services、およびSingletonをコンストラクター引数として渡すようになりました。MyCallable
次に、単体テストでEasyMockを多用して、これらの依存関係をモックし、期待どおりに呼び出されていることを確認しました。
これらすべての結果として、のコードMyCallable
は以前よりもいくらか大きくなります。のプライベート変数にアクセスできなくなったため、コンストラクターの引数としてそれらを渡し、プライベート変数として設定する必要がありConcreteThread
ます。ConcreteThread
MyCallable
これは間違ったアプローチだったと思いますか?それはおそらく、この種のリファクタリングを実行することによって、カプセル化を破り、コードベースに不要な定型文を追加したのでしょうか?代わりに、テストでリフレクションを使用しましたか?
date - 新しい Date() を使用した Junit
次の方法がある場合、junit テストはどうなりますか。
サブメソッド storeUser:
私が抱えている問題は、エンティティユーザーに設定されてから保存される日付です。私はjunitとeasymockを使用しています。
java - EasyMock と Ibatis
私の DAO レイヤーでは、ストアド プロシージャを呼び出すことによってすべてのデータベース作業を行っています。EasyMock を使用して DAO レイヤーのテストに成功した人はいますか?
ありがとうダミアン
java - GWT と EasyMock - createStrictMock() を呼び出せない
GWT プロジェクトのテストを容易にするために EasyMock を使用しようとしていますが、createStrictMock
メソッドでエラーが発生します。
私は何を間違っていますか?
java - java.lang.IllegalStateException: 互換性のない戻り値の型
EasyMock を使用して、テスト ケースでモック クラスを作成しています。
String
タイプはデータ型に属します。私の開発環境では問題なく動作しています。しかし、サーバーに転送してビルドすると、次のエラーで失敗します:
サーバーで失敗し、開発マシンで実行される理由がわかりません。
開発 EasyMock バージョン: 2.5.2
java - PowerMock / EasyMock の基本的な問題について助けが必要
私は PowerMock / EasyMock の世界に比較的慣れていないので、比較的簡単だと思っていたことがうまくいきません。おそらく、誰かが私が間違っている場所を教えてくれるでしょう。
次の 2 つのクラスを検討してください。
ここで、テスト クラスで、Bar メソッドの doSomething をテストします。私が抱えている問題は、Foo の使用です。ご覧のとおり、Foo に 0 を渡すと、ゼロ除算エラーが発生します。これが起こらないように、 Foo.doStuff() をスタブ化/抑制したいと思います。本当に必要なのは、doStuff() が実際に呼び出されるようにすることだけです。だから、私はこれをやった:
これを実行すると、ゼロ除算の例外が発生します。expect() 呼び出しを使用し、戻り値 1 を指定すると、メソッドが実行されなくなると考えていました。これは明らかにそうではありません。最初の質問は、なぜですか?
それで、上でコメントアウトされているステートメントを実行してみました。つまり、expect() 呼び出しをコメントアウトし、他の 2 つのステートメントを使用して、メソッドの実行を抑制しなければならないと考えました。私は、suppress() ステートメントを実行しないと、常にゼロ除算の例外が発生することがわかりました。ただし、そこに抑制ステートメントを入れると、doStuff が 1 回呼び出されると予想され、実際の呼び出しは 0 だったという assertionerror が表示されます。
では、なぜメソッドは実行済みとしてカウントされないのでしょうか?
メソッドを「スタブ」するためのモックを取得して、実際には何も実行されていないと見なされるようにするにはどうすればよいですか?
私が扱ってきた状況では、実際には doStuff で void が返されます。戻り値のないメソッドを処理するメソッドと、返すメソッドを処理するメソッドでは、必要なモック ステートメントがどのように異なるのでしょうか?
私はこの仕事をする寸前にいるようですが、ここで試みられているステートメントのある種の間違った組み合わせがあるように感じます. 私はこれに頭を悩ませ、たくさんの例を読みましたが、まだ不足しています。
何か助けはありますか?
ありがとう、
クレイグ
java - Powermock使用時のNoClassDefFoundError
テストランナーjunit
を使用してテストケースを実行しています。PowerMock
次のコマンドラインを使用して実行しています。
そうするとき、私はこのエラーを受け取ります:
どうすれば修正できますか?
java - java EasyMockは、TestedClassのメソッドからのオブジェクトへの呼び出しを無視します
オブジェクトがあるクラスがあります。このオブジェクトを呼び出すメソッドをテストしていますが、オブジェクトはテストとは関係がないため、無視したいと思います。
したがって、これらのメソッドをパラメーターを使用してmethod()
呼び出さずにテストしたいと思います。obj
ありがとう