Junit测试(Mockito,PowerMock)一个具有void方法和私有值的类

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

一些示例代码如下: (我只是补充了一些细节)

我想测试someMethod()是否运行

我尝试了@First answer,但收到如下错误消息:

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();
    }

}