gpt4 book ai didi

java - 将 Mockito 与 PowerMock 一起使用时初始化异常错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:17 24 4
gpt4 key购买 nike

我第一次将 Mockito 与 PowerMock 一起使用,在以下行运行以下代码时出现错误:

MockitoAnnotations.initMocks(SearchTest.class);

错误是:

java.lang.ExceptionInInitializerError
at org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter.<init>(ConditionalStackTraceFilter.java:17)
at org.mockito.exceptions.base.MockitoException.filterStackTrace(MockitoException.java:30)
at org.mockito.exceptions.base.MockitoException.<init>(MockitoException.java:19)
at org.mockito.exceptions.misusing.MockitoConfigurationException.<init>(MockitoConfigurationException.java:18)
at org.mockito.internal.configuration.ClassPathLoader.loadImplementations(ClassPathLoader.java:145)
at org.mockito.internal.configuration.ClassPathLoader.findPluginImplementation(ClassPathLoader.java:110)
at org.mockito.internal.configuration.ClassPathLoader.findPlatformMockMaker(ClassPathLoader.java:106)
at org.mockito.internal.configuration.ClassPathLoader.<clinit>(ClassPathLoader.java:59)
at org.mockito.internal.configuration.GlobalConfiguration.createConfig(GlobalConfiguration.java:38)
at org.mockito.internal.configuration.GlobalConfiguration.<init>(GlobalConfiguration.java:32)
at org.mockito.MockitoAnnotations.initMocks(MockitoAnnotations.java:94)
Caused by: java.lang.NullPointerException

测试类的代码是:

    import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(Parameterized.class)
@PrepareForTest(InputStreamReader.class)

public class SearchTest {
private String preFile;
private String expectedPreFile;
private String postFile;
private String expectedpostFile;

@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ "test1" } });
}

@Mock
private HttpClient mockHttpClient;
private HttpPost mockHttpPost;
private HttpResponse mockHttpResponse;
private HttpEntity mockHttpEntity;
private InputStream mockInputStream;
private InputStreamReader mockInputStreamReader;
private BufferedReader mockBufferedReader;

@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
xstream = new XStream();
}


public SearchTest(String folder) {
this.preFile= folder + "/inpRows.json";
this.expectedPreFile= folder + "/inpRowsExpected.json";
this.postFile= folder + "/outRows.json";
this.expectedpostFile= folder + "/outRowsExpected.json";
}

@Test
/**
* Simulates the calling of a handler *
* Setup @Parameters with a list of folders containing the test files. A test is performed for each entry
* @throws CallbackHandlerException
* @throws IOException
* @throws JSONException
* @throws SecurityException
* @throws NoSuchFieldException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public void testHandler() throws Exception {

/**********Set the expected results for the mocked methods****************/
Mockito.when(mockHttpClient.execute(mockHttpPost)).thenReturn(mockHttpResponse);
Mockito.when(mockHttpResponse.getEntity()).thenReturn(mockHttpEntity);
Mockito.when(mockHttpEntity.getContent()).thenReturn(mockInputStream);
PowerMockito.whenNew(InputStreamReader.class).withArguments(mockInputStream).thenReturn(mockInputStreamReader);
PowerMockito.whenNew(BufferedReader.class).withArguments(mockInputStreamReader).thenReturn(mockBufferedReader);
PowerMockito.whenNew(JSONObject.class).withArguments(Matchers.any(String.class)).thenReturn(jsonStub);

searchHandler.pre(); //Call the actual Pre method to be tested

}
}

对于我收到此错误的原因有什么建议吗?

谢谢

最佳答案

尝试将 initMocks 放在 @Before 而不是 @BeforeClass 方法中。您要做的是在静态方法中设置一些字段。这是我的猜测。

关于java - 将 Mockito 与 PowerMock 一起使用时初始化异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20657630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com