L'initialisation erreur d'Exception lors de l'utilisation de Mockito avec PowerMock
Je suis en utilisant Mockito avec PowerMock pour la première fois et je vais avoir une erreur lors de l'exécution du code ci-dessous à la ligne suivante:
MockitoAnnotations.initMocks(SearchTest.class);
L'erreur est:
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
Le code de la classe de test est:
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
}
}
Des suggestions pourquoi j'obtiens cette erreur?
Grâce
Vous avez coupé la trace de la pile trop tôt - ce qu'en vertu de la "Causé par ..." ligne?
Pouvez-Vous partager le code complet ici , j'ai aussi le même problème
Pouvez-Vous partager le code complet ici , j'ai aussi le même problème
OriginalL'auteur Global Dictator | 2013-12-18
Vous devez vous connecter pour publier un commentaire.
Essayer de mettre initMocks dans @Avant au lieu de @BeforeClass méthode. Ce que vous essayez de faire est de définir certains champs dans une méthode statique. C'est ma conjecture.
Je l'ai fait que par votre suggestion, mais tous les objets fantaisie sont nulles, ce qui me donne des NPE dans mon code. J'ai re-collé de mon code révisé ci-dessus dans ma question.
Étrangement, je suis le seul à avoir la première maquette de l'objet (mockHttpClient) comme le plus peuplé et le reste tout le monde est nul lorsque l'intérieur de la testHandler(). Pouvez-vous suggérer pourquoi ce qui se passe?
seulement mockHttpClient est annotée avec @Mock, c'est pourquoi.
ajouter @Mock annotation pour chaque maquette champ dans votre classe
OriginalL'auteur czajek