問題タブ [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 - Mockito によるメソッド出力の制御
次のようなクラスがあるとします。
ここで、次のような単体テストがあるとしましょう。
上記の主張は無効であることに注意してください。メソッド getAmountOfStuff が、常に 10 を返す別のメソッドを呼び出すため、失敗します。コードを分析しやすくするために、これらを分割しました。この例を考えると些細なことのように思えるかもしれませんが、私は自分自身がもっと大きなメソッドを作成していることによく気づきます。したがって、特定の関数でコードを分割しました。そうしないと、膨大な量のテキストが大きすぎたり、混乱したりして、分析や修正ができなくなり、テストはもちろんのことです。
したがって、私が知る必要があるのは、テストしているクラスの特定のメソッドの出力を制御する方法です。
junit4 - 階層レベル クラスでの Powermockito モック操作
私のアプリには、次のような階層レベルのクラス オブジェクトがあります。
パッケージ com.sample.folder1;
パッケージ com.sample.folder2;
テストパッケージの下のユニットピース:
上記のjunitをEclipseで実行すると、スローされます
同じパッケージと異なるパッケージの階層クラスをモックすることを提案してください。
junit - プライベート メソッドのモック
プライベート メソッドを内部的に呼び出すメソッドをモックしようとしています。このプライベート メソッドは、メソッドを使用してファイルを読み取りclassloader.getclass
、クラスの静的変数であるリストを作成します。このプライベート メソッドをモックするために考えられるすべての方法を試しましたが、うまくいかないようです。
私はモックしようとしてpopulateList()
いますが、常にコントロールがメソッドに入ります。私はmockitoとpowermockの両方でネット上のほとんどすべてのオプションを試しましたが、うまくいかないようです.私のJunitは以下の通りです.
クラスの開始には @RunWith(PowerMockRunner.class) @PrepareForTest(TestLoad.class) ArrayList testList = new ArrayList(); があります。testList.add("00"); TestLoad インスタンス = PowerMock.createPartialMock(TestLoad.class,"populateList"); PowerMock.expectPrivate(インスタンス、「populateList」).andReturn(testList); PowerMock.replay(インスタンス);
以下、参考までにログです。
java.lang.IllegalStateException: com.xyz.TestLoad という名前のクラスを変換できませんでした。理由: java.io.IOException: 無効な定数型: org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:266) で 17 で 18 org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java :180) org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:68) で java.lang.ClassLoader.loadClass(ClassLoader.java:357) で java.lang.Class.forName0(Native Method) でorg.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:145) の java.lang.Class.forName(Class.java:348) org.powermock.modules.junit4.common. internal.impl.JUnit4TestSuiteChunkerImpl.
java - PowerMockitoで失敗するSingleton Public/Voidメソッドのモック
シナリオは次のとおりです。
クラス A の methodA の単体テストを作成しています。このために、次のスタブ コードを作成しました。
このコードの直後に、コードがあります:
このコードは、次のようになるとすぐに失敗します。
私はすでに次の Powermockito 手順を使用しています。
それでも、SingletonClass の Public/Void メソッドをモックできません。それらは常にnullになります。
java - PowerMockitoを使用してプライベートコンストラクターを持つクラスにプリミティブなプライベート静的最終フィールドを設定するにはどうすればよいですか?
JUnit テストのコンストラクターをprivate static final
持つクラスにフィールドを設定しようとしています。private
コードを基本まで煮詰めると、次のようになります。
私のテストは次のようになります。
そして、これが私のPOMファイルからの抜粋です。
にブレークポイントを設定すると、IntelliJ のデバッガーでに設定されreturn FLAG;
ていることがはっきりとわかります。それでも、テストは で失敗します。FLAG
true
AssertionError
これを機能させるために何をすべきか考えていますか?
更新:リフレクションの使用も機能しないようです:
このsetField()
方法は、内部ライブラリから入手できるものです。残念ながら、同じ結果が得られます。AssertionError
更新 2: PowerMock を完全に削除してもあまり効果がないようです。
このために、クラスレベルから PowerMock アノテーションを削除しました...
また、この質問をPowerMock メーリング リストにも投稿しました。
java - Mockitoで印刷するvoidメソッドをテストする
テストする必要があるいくつかの System.out.println 呼び出しを持つメイン メソッドのみを含むクラスがあります。このクラスの設計が良くないことに同意しますが、そのままにしておく必要があります。Mockitoでは、適切な値が出力されていることをテストする方法がわかりません。StackOverflow で同様の質問への回答を見たことがありますが、System.out.println への呼び出しが実際にはテスト内にあり、テスト対象のクラス内にないため、それらは異なります。
たとえば、私がやりたいテストの 1 つは、無効な引数が送信された場合に適切なメッセージが出力されることをテストすることです。ConnectionPasswordEncryptor.main(引数); この呼び出しは何も返しませんが、標準出力に出力します。標準出力に出力されたものを取得するにはどうすればよいですか?