【问题标题】:Why isn't PowerMockito mocking this class properly?为什么 PowerMockito 不能正确地模拟这个类?
【发布时间】:2015-02-23 19:25:24
【问题描述】:

我正在使用PowerMockito,这是我的测试:

import com.PowerMockitoProduction;
import org.apache.commons.httpclient.HttpClient;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;


@RunWith(PowerMockRunner.class)
@PrepareForTest(HttpClient.class)
public class PowerMockitoTest {

    @Test(expected = UnsupportedOperationException.class)
    public void test() throws Exception {

        PowerMockito.whenNew(HttpClient.class).withNoArguments().thenThrow(new UnsupportedOperationException());

        new PowerMockitoProduction().createClient();

    }
}

此测试失败。

java.lang.AssertionError: Expected exception: java.lang.UnsupportedOperationException

PowerMockitoProduction 的作用如下:

package com;

import org.apache.commons.httpclient.HttpClient;

public class PowerMockitoProduction {

    public void createClient() {
        HttpClient client = new HttpClient();
        System.out.println(client);
    }

}

我希望这段代码根据我的测试中的这一行创建一个模拟 HttpClient

PowerMockito.whenNew(HttpClient.class).withNoArguments().thenThrow(new UnsupportedOperationException());

但它似乎并没有影响我的生产代码。我做错了什么?

【问题讨论】:

    标签: java unit-testing mockito powermock powermockito


    【解决方案1】:

    我发现我做错了什么。我需要改变:

    @PrepareForTest(HttpClient.class)
    

    @PrepareForTest(PowerMockitoProduction.class)
    

    【讨论】:

      猜你喜欢
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多