私はプライベートメソッドをテストしようとしており、次の設定をしています:
パブリック クラス 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);
nullClassB オブジェクトとしてメソッドを実行しようとするまで、これはうまく機能します。
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パラメータとしてメソッドを実行する方法はありますか?