問題タブ [powermockito]
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またはモックツールを使用してスーパークラスのJavaメソッドをモックする方法は?
スーパークラス
実装
メソッドをテストする必要があり、getMyData()
メソッドをモック/抑制したいcreateQuery()
ので、テスト環境で失敗します。
ありがとう!
java - パラメータでメソッドを呼び出すと、PowerMockitoモック静的メソッドが失敗します
いくつかの静的メソッドを持つ電卓クラスを使用するクラスをテストしようとしています。同様の方法で別のクラスをうまくモックしましたが、これはより頑固であることが証明されています。
モックされたメソッドに渡された引数の 1 つでメソッド呼び出しが含まれている場合、静的メソッドはモックされていないようです (そしてテストが中断されます)。内部呼び出しを削除することは、明らかにオプションではありません。ここで私が見逃している明らかなものはありますか?
これは、同じように動作する圧縮バージョンです...
そして、ここでテスト...
質問について混乱があるように思われるので、より「現実的な」例を考案しました。これにより、あるレベルの間接性が追加されるため、モックされたメソッドを直接テストしているようには見えません。SmallCalculator クラスは変更されていません。
そして、これが新しいテストクラスです...
java - クラスを初期化せずにメソッドをテストする
クラスを初期化せずにメソッドをテストする方法があるかどうか疑問に思っています。methodToTest
私が尋ねている理由は、コンストラクターで渡されるオブジェクトがたくさんあるためです。これは、徹底的なチェックからオブジェクト属性を使用していないように見える一方で、多くのモックスタブを意味します。それ以外の場合は、メソッドが静的に変換される可能性があるのは私のコードではありません。
android - PowerMockito.whenNew が Android の Intent クラスで機能しない
モック Intent オブジェクトを使用しようとしていますが、PowerMockito から whenNew を使用すると、コンストラクターをモックできません。可能なすべての引数の組み合わせを試しましたが、うまくいきません。
testing - PowerMockito.whenNew が機能しない
アップデート。最後に実際の例を確認してください。
私はクラスを持っています:
そしてテスト:
ただし、実際のクラスを作成して出力します。
クラスXYZ{}
私は何を間違っていますか?
PS Maven デプス:
作業例:
java - powermockito を使用して URL クラスをモックする際の問題
この方法の利点の詳細には立ち入らずに、次のテスト コードが機能しない理由を理解するための助けが必要です! これは、この時点でより多くの学習演習でした..
PowerMockito を使用して URL クラスのモックを作成し、その動作を定義しようとしています。コードは次のとおりです。
次の例外スタックがスローされます。特に、このテストのリンク 39 は、次の場所にあります。エラーをスローします。URL は最終クラスであり、私は Powermockito を使用していることに注意してください。
unit-testing - グルーヴィーなテストファイルをモックしているときに、mockito と powermockito が AbstractMethodError をスローする
最終クラス ( java.net.URL
) をモックし、それを非常に単純な Wrapper クラス ClassToTest.groovy で使用しようとしています。テスター クラスはさらに下に示され、ClassToTestTester.groovy です。
ご覧のとおり、ここで達成しようとしているのは、(非常に) 単純なテスト ワークフローを実行することだけです。
- モックの定義 (mockURL)
- メソッドスタブの定義
getUserInfo
- メソッドのテスト:
testClass.returnUserInfo()
残念ながら、テスト中のクラス (テスト中のシステムまたは SUT とも呼ばれます):ClassToTest
では、実行時に url.getUserInfo()
空の文字列が返されます。ここで起こっていることは、@Test
メソッドでコンストラクターとして渡された mockURL オブジェクトが永続化されていないことです。代わりに、クラスローダは URL の新しいインスタンスを SUT にロードします。どちらも得られないので、これがそうであると信じさせられNullPointerException
ます!私が得るのは、userInfo
そうでなければ「apil.tamang」と言うべき空の文字列だけです。
また、.java 拡張子で記述された同じファイルは期待どおりに機能します。つまり、同じClassToTestTester
パスを実行しています。
ここで何が間違っていますか?私が見逃している露骨なエラーはありますか??
java - PowerMockito モック静的メソッドで引数を使用すると、引数の型が一致しないのはなぜですか?
PowerMockito を使用して静的クラスへの呼び出しをモックしていますが、メソッドにはオブジェクトの配列である引数があります。したがって、呼び出しは次のようになります。
しかし、PowerMockito を次のようにモックしようとすると、次のようになります。
これにより、Eclipseで警告が表示されます。
タイプ MyObject[] の引数は、タイプ PowerMockito からの varargs メソッド when(Class, String, Object...) の呼び出しのために明示的に Object[] にキャストする必要があります。別の方法として、varargs 呼び出しのために Object にキャストすることもできますが、次のように Object にキャストすると、次のようになります。
このメソッドの実行時にその文字列が返されていません。これは、オブジェクト型パラメーターが原因でメソッドが認識されないためであると想定しています。
オブジェクトとしてキャストせずに非プリミティブを渡す方法、またはメソッドをキャストで認識させる方法についてのアイデアはありますか?
java - モック化されたサービスを動的に作成されたクラスに注入する方法
その@Spy
ため、-> (メソッドからオブジェクトへ) のリファクタリング パターンに関連して、新しいオブジェクトの作成を実行する がありますが、新しく作成されたインスタンスには、依存するサービスが注入されていません。
コードは明らかに、このフォーラムに投稿する私の所有物ではありませんが、疑似ロジックでは、以下のメッセージを伝えようとします:
ただし、TestObject
このサービスは Abstract 親クラスから継承され、 で直接使用するとtestObj
nullspecialistServiceMock
ではなく、正常に動作します。
が新しいクラスにtestObj
ヒットし、そのメソッドを呼び出すと、いくつかのことを行う必要がありますが、null です。RefactoredMethodToObject()
invoke()
specialistServiceMock
specialistServiceMock
これは Mockito の能力を超えているように見えますが、PowerMock も手元にあります。
つまりspecialistServiceMock
、動的に作成された のインスタンスで実行するために必要なアクションをモックする必要がありますRefactoredMethodToObject()
。
どんなアイデアでも大歓迎です。さらに情報が必要な場合はお知らせください。ありがとう