J'essaye d'écrire un test unitaire pour manipuler un contrôleur de téléchargement de fichier en utilisant Spring 3. Maintenant, si je renvoie l'image à ma méthode de service via le contrôleur, tout fonctionne correctement. Mais quand je fais un test d'unité, je reçois une exception de pointeur nul.java.lang.NullPointerException lors de la création de DiskFileItem
Il semble que la propriété "dfos" à l'intérieur du DiskFilteItem
est nulle lorsque je l'instancie manuellement mais qu'elle est remplie lors de la récupération d'un MultipartFile
à partir du contrôleur. Je sens qu'il me manque quelque chose d'idiot dans ma configuration. Mon fichier pom contient les dépendances suivantes.
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0</version>
</dependency>
Ce code jette la trace de la pile suivante
java.lang.NullPointerException at org.apache.commons.fileupload.disk.DiskFileItem.getSize(DiskFileItem.java:316) at org.springframework.web.multipart.commons.CommonsMultipartFile.(CommonsMultipartFile.java:60) at ImgurClientTest.testUploadImage(ImgurClientTest.java:58) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
Vous avez raison qui était une faute de frappe dans la description, j'ai modifié l'échantillon original pour pointer vers un fichier. Les entrées du fichier journal sont les suivantes: 2010-11-08 11: 57: 11,907 [principal] INFO ClientTest - fichier trouvé: true 2010-11-08 11: 57: 11,908 [principal] INFO ClientTest - taille de fichier : 291812 –
Si cela résout votre problème, s'il vous plaît upvote et marquer comme réponse. J'apprécie beaucoup. –