Junit测试(Mockito,PowerMock)一个具有void方法和私有值的类
一些示例代码如下: (我只是补充了一些细节) 我想测试someMethod()是否运行 我尝试了@First answer,但收到如下错误消息:Junit测试(Mockito,PowerMock)一个具有void方法和私有值的类,junit,mockito,powermock,Junit,Mockito,Powermock,一些示例代码如下: (我只是补充了一些细节) 我想测试someMethod()是否运行 我尝试了@First answer,但收到如下错误消息: java.lang.AbstractMethodError: org.powermock.api.mockito.internal.exceptions.StackTraceCleanerProvider$1.isIn(Ljava/lang/StackTraceElement;)Z at org.mockito.internal.excepti
java.lang.AbstractMethodError: org.powermock.api.mockito.internal.exceptions.StackTraceCleanerProvider$1.isIn(Ljava/lang/StackTraceElement;)Z
at org.mockito.internal.exceptions.stacktrace.StackTraceFilter.filter(StackTraceFilter.java:33)
at org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter.filter(ConditionalStackTraceFilter.java:23)
at org.mockito.exceptions.base.MockitoException.filterStackTrace(MockitoException.java:44)
. 但是你最好开始使用构造函数注入。你能添加完整的stacktrace和产生此错误的吗?没有必要在
a
上进行spy
。此外,这只是验证是否调用了someMethod()
,而不是像OP制定的那样实际运行run
。但我认为这是正确的答案。@second,谢谢\@实际上,InjectMock注释应该单独使用。作为在数据实例上运行实际方法的一种方式,我们可以将其定义为间谍。但这也意味着我们将逻辑置于其他类的责任之下,这对于单元测试来说并不理想。谢谢,Jose。但它似乎对我不起作用。我收到如下错误消息:
java.lang.AbstractMethodError: org.powermock.api.mockito.internal.exceptions.StackTraceCleanerProvider$1.isIn(Ljava/lang/StackTraceElement;)Z
at org.mockito.internal.exceptions.stacktrace.StackTraceFilter.filter(StackTraceFilter.java:33)
at org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter.filter(ConditionalStackTraceFilter.java:23)
at org.mockito.exceptions.base.MockitoException.filterStackTrace(MockitoException.java:44)
@RunWith(MockitoJUnitRunner.class)
public class ATest {
@InjectMocks
private A a;
@Spy
private Data data;
@Test
public void test() {
// execute
this.a.Boo();
// verify
Mockito.verify(this.data).someMethod();
}
}