[解決済み] Powermock (With Easymock) モックの最後の呼び出しはありません。
質問
簡単なテストケースを実行しようとしているだけです。 次のメソッドがあります。
public static void run(String[] args) throws Throwable {
CommandLineArguments opts = CommandLineOptionProcessor.getOpts(args);
}
このメソッド/テストケースは、今後も順次構築していく予定です。 しかし、まずは簡単なテストケースが動作することを確認したいと思います。 そこで、次のようなテストを書いてみました。
@Test
public void testRun() {
String[] args = {"--arg1", "value", "--arg2", "value2"};
mockStatic(CommandLineOptionProcessor.class);
expect(CommandLineOptionProcessor.getOpts(args));
EasyMock.replay(CommandLineOptionProcessor.class);
}
その後、次のようなエラーが発生します。
java.lang.IllegalStateException: no last call on a mock available
StackOverflowの他の投稿をいくつか読みましたが、彼らの解決策はPowerMockをMockitoで使っているということのようでした。 私はPowermockとEasymockを使用しているので、問題ないはずです。
Reneのアドバイスに従って、クラスのトップに以下を追加しました。
@PrepareForTest(CommandLineOptionProcessor.class)
@RunWith(PowerMockRunner.class)
public class DataAssemblerTest {
前のエラーは直しました。 しかし、今度はこのエラーが発生しました。
java.lang.IllegalArgumentException: Not a mock: java.lang.Class
at org.easymock.internal.ClassExtensionHelper.getControl(ClassExtensionHelper.java:61)
at org.easymock.EasyMock.getControl(EasyMock.java:2172)
at org.easymock.EasyMock.replay(EasyMock.java:2074)
.
.
.
何が原因なのか、何かアイデアがあれば教えてください。
解決方法は?
テストクラスのアノテーションは
@RunWith(PowerMockRunner.class)
と
@PrepareForTest(CommandLineOptionProcessor.class)
?
@RunWith(PowerMockRunner.class)
@PrepareForTest(CommandLineOptionProcessor.class)
public class TestClass {
@Test
public void testRun(){
が必要です。
@PrepareForTest(CommandLineOptionProcessor.class)
をテストクラスレベルで使用します。を参照してください。
Powermock ドキュメント
:
テストケースのクラスレベルで @PrepareForTest(ClassThatContainsStaticMethod.class) アノテーションを使用します。
また、必要なライブラリがテストのクラスパスにあることを確認してください。
あなたの場合 javassist ライブラリがありません。クラスパスに追加してください。もしかしたら他のライブラリも足りないかもしれませんが...それはまた今度。
もし
java.lang.IllegalArgumentException: Not a mock: java.lang.Class
を使用している場合は
EasyMock.replay()
を使用する必要があります。
PowerMock.replay()
関連
-
[解決済み] if / for / while 内で "Missing return statement" が発生する。
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み】Mockitoでモックからチェックされた例外を投げる
-
[解決済み】破損したjarファイル
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み] StringBuilderをクリアまたは空にするにはどうすればよいですか?重複] [重複] [重複] [重複] [重複] [重複
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。
-
[解決済み】Javaの未処理例外について
-
[解決済み] Mockitoでvoidメソッドをモックする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】HTTPステータス 405 - リクエストメソッド「POST」はサポートされていません (Spring MVC)
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み】非閉鎖文字リテラルエラー
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み] テスト
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み] エラー - trustAnchors パラメータは空であってはなりません。