Initialisieren Ausnahme Fehlermeldung, wenn mit Mockito mit PowerMock
Ich bin mit Mockito mit PowerMock für die erste Zeit, und ich habe einen Fehler beim ausführen von den folgenden code in der folgenden Zeile:
MockitoAnnotations.initMocks(SearchTest.class);
Der Fehler ist:
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
Den code für die test-Klasse:
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
}
}
Irgendwelche Vorschläge, warum ich diese Fehlermeldung bekommen?
Dank
Sie haben, schneiden Sie die stack-trace zu früh - was ist unter "Caused by ..." - Zeile?
Können Sie teilen sich den kompletten code hier , ich habe auch das gleiche Problem
Können Sie teilen sich den kompletten code hier , ich habe auch das gleiche Problem
InformationsquelleAutor Global Dictator | 2013-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen initMocks in @Vor statt @BeforeClass Methode. Was Sie versuchen zu tun ist, um einige Felder in eine statische Methode. Das ist meine Vermutung.
Ich Tat, wie pro Ihre Anregung aber all die VERHÖHNT null sind, wodurch mich der NPE in meinem code. Ich habe wieder eingefügt, meine überarbeitete code oben in meiner Frage.
Merkwürdigerweise bin ich nur mit den ersten mock-Objekt (mockHttpClient) als besiedelt ist und jeder rest null ist, wenn innerhalb der testHandler(). Können Sie empfehlen, warum dies geschieht?
nur mockHttpClient ist annotiert mit @Mock, das ist, warum.
fügen Sie @Mock-annotation für jedes mock-Feld in der Klasse
InformationsquelleAutor czajek