質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

2600閲覧

PowerMockのverifyStaticでNotAMockExceptionが発生してしまう

outso1990

総合スコア23

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

2クリップ

投稿2019/08/19 09:07

バージョン

  • PowerMock 2.0.2
  • Mockito 2.23.4

staticメソッドを持つクラス

java

1public class StaticMethodClass { 2 public static void method(String str) { 3 } 4}

staticメソッドを使用するテスト対象クラス

java

1public class Target { 2 public void test() { 3 StaticMethodClass.method("hoge"); 4 } 5}

テストクラス

java

1import org.junit.Before; 2import org.junit.Test; 3import org.junit.runner.RunWith; 4import org.mockito.ArgumentMatchers; 5import org.mockito.Mockito; 6import org.powermock.api.mockito.PowerMockito; 7import org.powermock.core.classloader.annotations.PowerMockIgnore; 8import org.powermock.core.classloader.annotations.PrepareForTest; 9import org.powermock.modules.junit4.PowerMockRunner; 10 11@RunWith(PowerMockRunner.class) 12@PrepareForTest({ StaticMethodClass.class }) 13@PowerMockIgnore({ "org.mockito.*", "org.powermock.*" }) 14public class TargetTest { 15 16 @Before 17 public void setUp() { 18 PowerMockito.mockStatic(StaticMethodClass.class); 19 } 20 21 @Test 22 public void test() { 23 Target target = new Target(); 24 target.test(); 25 26 PowerMockito.verifyStatic(StaticMethodClass.class, Mockito.times(1)); 27 StaticMethodClass.method(ArgumentMatchers.eq("hoge")); 28 } 29 30}

発生する例外

java

1org.mockito.exceptions.misusing.NotAMockException: 2Argument passed to verify() is of type Class and is not a mock! 3Make sure you place the parenthesis correctly! 4See the examples of correct verifications: 5 verify(mock).someMethod(); 6 verify(mock, times(10)).someMethod(); 7 verify(mock, atLeastOnce()).someMethod(); 8 at TargetTest.test(TargetTest.java:26) 9 at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68) 10 at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:89) 11 at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:97) 12 at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87) 13 at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50) 14 at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) 15 at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) 16 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89) 17 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) 18 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541) 19 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763) 20 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463) 21 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

staticメソッドが正しく呼ばれていることを確認したいです。
ネットで調べたのですが、解決方法が見つかりませんでした。
どうすれば解決できるでしょうか。

h-matsuo👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問