相关疑难解决方法(0)

如何使用power mockito调用静态void方法

我使用以下内容.

Powermock-mockito 1.5.12
Mockito 1.95
junit 4.11
Run Code Online (Sandbox Code Playgroud)

这是我的utils类

public void InternalUtils {
    public static void sendEmail(String from, String[] to, String msg, String body) {
    }
}
Run Code Online (Sandbox Code Playgroud)

这是被测试班级的要点:

public class InternalService {
       public void processOrder(Order order) {
           if (order.isSuccessful()) {
               InternalUtils.sendEmail(...);
           }
       }
}
Run Code Online (Sandbox Code Playgroud)

以下是测试:

@PrepareForTest({InternalUtils.class})
@RunWith(PowerMockRunner.class)
public class InternalService {
   public void verifyEmailSend() {
        mockStatic(Internalutils.class);
        doNothing().when(InternalUtils, "sendEmail", anyString(), any(String.class), anyString(), anyString());
        Order order = mock(Order.class);
        when(order.isSuccessful()).thenReturn(true);
        InternalService is = new InternalService();

        verifyStatic(times(1));
        is.processOrder(order);
   }
}
Run Code Online (Sandbox Code Playgroud)

上述测试失败.给出的验证模式为none,但根据代码,如果订单成功,则必须发送电子邮件.

java static-methods unit-testing mockito

41
推荐指数
2
解决办法
8万
查看次数

标签 统计

java ×1

mockito ×1

static-methods ×1

unit-testing ×1