【发布时间】:2014-06-07 11:08:26
【问题描述】:
当我使用超过 1 个 ArgumentCaptor 参数时,我会收到一个 Nullpointer。可能有人知道出了什么问题吗?
@RunWith(PowerMockRunner.class)
@PrepareForTest(FileHelper.class)
public class MyTest {
...
@Before
public void setUp() throws Exception {
PowerMockito.mockStatic(FileHelper.class);
}
@Test
public void save() throws Exception {
ArgumentCaptor<String> argName = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<List> argList = ArgumentCaptor.forClass(List.class);
PowerMockito.doNothing().when(FileHelper.class, "saveTextFile", argName.capture(),
argList.capture());
...
}
FileHelper 类中的 saveTextFile 方法:
public static void saveTextFile(String filename, List<String> data) {
...
}
如果我运行代码,我会得到这个异常:
java.lang.NullPointerException 在 java.lang.Class.isAssignableFrom(Native Method) 在 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:859) 在 org.powermock.reflect.Whitebox.invokeMethod(Whitebox.java:466) 在 org.powermock.api.mockito.internal.expectation.PowerMockitoStubberImpl.when(PowerMockitoStubberImpl.java:106)
如果我调用一个只有一个参数的方法,即列表参数,一切正常。
【问题讨论】:
-
这似乎是common problem。您没有指定您的方法是否重载,但由于堆栈跟踪到相同的行号是相同的,我将其标记为this other question 的副本。希望回答对你有帮助!
-
感谢您的信息。我重命名了该方法并且它有效!
标签: java unit-testing junit mockito