問題タブ [powermock]
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を使用して複数のクラスの静的メソッドをモックします
PowerMockを使用してクラスから静的メソッドをモックする方法を知っています。
しかし、JUnitとPowerMockを使用して、テストクラスの複数のクラスの静的メソッドをモックしたいと思います。
誰かが私にこれを行うことが可能であり、それを行う方法を教えてもらえますか?
maven - Maven テストの依存関係が見つからない
easymock がバンドルされている powermock へのテスト依存関係を宣言しています。
を実行すると、上記の依存関係に含まれているにもかかわらず、mvn test
テスト src は を見つけることができると主張しますが、見つけることはできません。org.powermock
org.easymock
テストスコープの推移性による問題なのかと思ったので、コンパイルスコープも試してみました(ドキュメントhttp://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
には、テスト時にコンパイル依存関係が利用可能であると記載されているため)。
また、ポンの代わりにバンドルされたjarを使用しようとしましたが、役に立ちませんでした。依存関係を個別に宣言できることを認識しています (つまり、powermock と easymock の個別の依存関係) が、私の目的のために、必要なすべてのテスト ライブラリを含む 1 つの依存関係のみを持つように制限されています。
java - Powermock は、3 番目 (プラグイン) から参照されると、Eclipse の JUnit Plugin-Test で ClassNotFoundException を引き起こします。
Maven なしで RCP-Eclipse-Application をテストするために、Eclipse で JUnit-Tests を作成しています。一部のテストケースでは、Powermock (Easymock を使用) を使用して、オブジェクトの作成と静的メソッドをモックする必要があります。
testet となるクラスを含むプラグインと、対応するテストを含む 2 番目のプラグインがあります。PluginObject と PluginTest を寄付しましょう:
作業状況:
PLuginTest で powermock-Jar を使用して設定すると、TestCase と Plugins-Manifest-Runtim で設定されたものが正常に実行され、目的の結果が返されます。
私の TestCase は、現在@RunWith -Annotationを使用して、次の行で始まります。
しかし、アプリケーションでのモックに Powermock を使用したいプラグインが複数あります。共有ライブラリを別の特別なプラグインに抽出することをお勧めします。それを Test.Util と呼びましょう。
Powermock を除く他のすべてのライブラリでは問題はありませんが、Powermock を PluginTest から Test.Util-Plugin に移動すると、初期化中に JUnit PLugin-Test を開始するときに「ClassNotFoundException」が発生します。(通常の JUnit-Test はこのエラーをスローしません)
MANIFEST.MF の Runtime の下にある Classpath のライブラリを使用して Test.Util を構成し、これらのプラグインのすべてのパッケージをエクスポートしました。Eclipse では、正しいライブラリが TestCase からリンクされています。
@RunWithの代わりに JUnit-Rule でブートストラップも使用しましたが、同じ ClassNotFoundException が発生します。問題は変わりませんでした。
Plugin-Test の実行構成の再構成、マニフェストでの ClassPath: .\ の設定、PluginTest と Test.Util-Plugin の Lazy/Not-Lazy Loading と Buddy-ClassLoading の設定など、多くのことを試しました。
Webで何時間も試して検索した後、テストプラグインから3番目のプラグインに抽出された場合にPowermockがこの例外につながる理由と、これを機能させる方法はまだわかりません. アプリケーションで何かが誤って構成されているかどうかは、現時点ではわかりません。
同じまたは類似の問題に遭遇した人、またはそれに対する適切な解決策を得た人はいますか?
java - PowerMock、Mockito、および TestNG を使用したパブリック メソッドで使用されるプライベート メソッドのモック
私が持っているクラスの単体テストを書きたいです。このクラスにはパブリック メソッドがあり、パブリック メソッド内には、同じクラスのプライベート メソッドへの呼び出しがあります。これらのプライベート メソッドの呼び出しをモックしたいと考えています。クラスは次のようになります。
私の単体テストでは、Mockito と TestNG で PowerMock を使用しようとしています。somePublicMethod をテストするテストでの私の試みは次のとおりです。
このテストを実行すると、例外といくつかのヒントが表示されます。
オンラインでいくつかの例を見てきましたが、PowerMock と Mockito および TestNG を使用して、特に私がやりたいことを行う例は見つかりませんでした。私が別の方法でできることについて、誰かが私にいくつかの指針を与えることができますか?
java - jdbcデータソースのモック作成の難しさ
DatasourceとInitialContextをモックして、コンテナーの外部のデータベースに接続したいと思います。これは私がモックを使用したいロジックです:
これが私が進めた方法です
問題:モックはデータソースに対して機能しません。常にnullですが、InitialContextのモックは機能しています。
java - Javaテスト検証コンストラクター
私は次の方法でクラスコンストラクターを検証する方法を見つけようとしています(これは理論的な例であることに注意してください)
コンストラクターがaddItemをany(RoundItem.class)で1回、any(SquareItem.class)で1回呼び出したことを確認したいと思います。PowerMockまたはMockitoを使用して、このような方法でコンストラクターを検証するための良い方法を見つけることができないようです。何か案は?
java - 子クラスの外部から親クラスの保護されたメソッドにアクセスする(リフレクションまたは機能するものを使用)
私は運がない解決策を探しました。これが私が持っているものであり、私が達成しようとしていることです
親クラス
子クラス
MyChlidClass
のsetField
メソッドを呼び出してから、MyAbstractParentClass
のprotected String getPrivateParentField()
あとがきを呼び出そうとしています。
しかし、上記のコードはMyChlidClass
、親クラスのメソッドを除いて、宣言されたメソッドのみを返しますprotected
。保護されたメソッドにアクセスするにはどうすればよいでしょうか? 何か案は?
事前にどうもありがとうございました :)
編集 これが興味のある人のための最終的な解決策です
PS :いくつかの例外があり、キャッチするか、スロー宣言を追加できます。
あなたの助けに再び感謝します
java - モック オブジェクトの戻り値を動的に変更する
次のメソッドがあるとします。
ここで、ループに入るためにSomeIterator
返される Mock オブジェクトを渡したいのですが、ある時点 (たとえば 10 回後など) に返されるようにしたいのですが、PowerMock/ でこれを実現する方法はありますか?イージーモック?Boolean.TRUE
Boolean.FALSE
よろしくお願いします。
java - PowerMock を組み込んだ生成コードのテスト
最近ひっかかりました。コード生成を担当するライブラリの一部を実行するために、いくつかの単体テストを作成しています。このコードは構成オブジェクトの入力を受け取り、CodeModel を使用してコードを記述し、これらのクラスを String にダンプし、Java 6 コンパイラ API を使用してその場で使用可能なクラスにコンパイルします。
私がヒットしている障害は、生成されたコードでテストしているメソッドの 1 つであり、最終メソッド (Android バンドル) を持つクラスを使用し、使用時に例外をスローします (「java.lang.RuntimeException: Stub!」)。したがって、これを回避するために、Ive は PowerMock を使用して最終的なメソッドをモックしました。ただし、この場合、コンパイラ API は NPE をスローします。これは、PowerMock が舞台裏で使用している機能によるものだと思いますが、よくわかりません。
例外は次のとおりです。
MemoryFileManager.java:
MemoryClassLoader.java (MemoryFileManager を使用):
そして、この問題を示す非常に基本的なテスト: