バージョン
- 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メソッドが正しく呼ばれていることを確認したいです。
ネットで調べたのですが、解決方法が見つかりませんでした。
どうすれば解決できるでしょうか。
あなたの回答
tips
プレビュー