私はプライベートメソッドをテストしようとしており、次の設定をしています:
パブリック クラス MyClass { private boolean myprivatemethod(ClassB classBObject, boolean b) { // ここで何かをする someOtherMethod(); } プライベートボイド someOtherMethod() { // その他のもの } } final MyClass testsubject = PowerMockito.spy(new MyClass()); // "someOtherMethod" がモックされているため、スパイが必要です // 簡単にするためにここには示していません ClassB classBObject = mock(ClassB.class); boolean result = Whitebox.invokeMethod(testsubject, "myprivatemethod", classBObject, true);
null
ClassB オブジェクトとしてメソッドを実行しようとするまで、これはうまく機能します。
boolean result = Whitebox.invokeMethod(testsubject, "myprivatemethod", null, true);
これにより、次の例外が発生します。
java.lang.NullPointerException java.lang.Class.isAssignableFrom(ネイティブメソッド)で org.powermock.reflect.internal.WhiteboxImpl.checkIfParameterTypesAreSame (WhiteboxImpl.java:2432) で org.powermock.reflect.internal.WhiteboxImpl.getMethods (WhiteboxImpl.java:1934) で org.powermock.reflect.internal.WhiteboxImpl.getBestMethodCandidate (WhiteboxImpl.java:1025) で org.powermock.reflect.internal.WhiteboxImpl.findMethodOrThrowException (WhiteboxImpl.java:948) で org.powermock.reflect.internal.WhiteboxImpl.doInvokeMethod (WhiteboxImpl.java:882) で org.powermock.reflect.internal.WhiteboxImpl.invokeMethod (WhiteboxImpl.java:713) で org.powermock.reflect.Whitebox.invokeMethod (Whitebox.java:401) で test.myproject.TestMyClass.testMyClass(TestMyClass.java:10) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で java.lang.reflect.Method.invoke(Method.java:597) で junit.framework.TestCase.runTest(TestCase.java:154) で junit.framework.TestCase.runBare (TestCase.java:127) で junit.framework.TestResult$1.protect(TestResult.java:106) で junit.framework.TestResult.runProtected (TestResult.java:124) で junit.framework.TestResult.run(TestResult.java:109) で junit.framework.TestCase.run(TestCase.java:118) で junit.framework.TestSuite.runTest(TestSuite.java:208) で junit.framework.TestSuite.run(TestSuite.java:203) で org.powermock.modules.junit3.internal.impl.PowerMockJUnit3RunnerDelegateImpl.run (PowerMockJUnit3RunnerDelegateImpl.java:113) で org.powermock.modules.junit3.internal.impl.JUnit3TestSuiteChunkerImpl.run (JUnit3TestSuiteChunkerImpl.java:165) で org.powermock.modules.junit3.PowerMockSuite.run (PowerMockSuite.java:51) で org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run (JUnit3TestReference.java:130) で org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:467) で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:683) で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.java:390) で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.java:197) で
Powermockito 1.5 を使用しています。null
パラメータとしてメソッドを実行する方法はありますか?