IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

où mettre les images pour des test JUnit ?


Sujet :

Java

  1. #1
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    Par défaut où mettre les images pour des test JUnit ?
    bonjour à tous,

    la question est sans doute très bête, mais dans mes tests unitaires, je veux tester la validation d'un formulaire qui permet d'uploader des images.
    Le truc c'est que j'arrive très bien à faire passer des images qui sont sur mon bureau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File image = new File("/Users/mathildepellerin/Desktop/style_vitrine.tar.gz");
    mais que c'est évidemment pas super portable et que je n'arrive pas à atteindre les images présentes dans mon projet...

    Voisi l'arborescence de mon projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     - src/test/java
     - src/main/java
     - src/main/ressources
         |_ images
         |_ applicationContext.xml
         |_ ...
    J'ai essayé d'atteindre les images présentes dans les ressources sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File image = new File("/images/beurre.gif");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    java.lang.IllegalArgumentException: File does not exists. You must provide an existing file: /images/beurre.gif
    	at org.apache.wicket.protocol.http.MockHttpServletRequest.addFile(MockHttpServletRequest.java:246)
    	at org.apache.wicket.util.tester.FormTester.setFile(FormTester.java:676)
    	at fr.statlife.protoE4N.wicket.TestStory23_CreationQuestionnaire.testStory23_TA11_ReussiteEnregistrementAvecQuestionEtImage(TestStory23_CreationQuestionnaire.java:424)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	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.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    	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.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
    	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
    Alors que le fichier ApplicationContext.xml est utilisé dans ce même test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("/applicationContext.xml")
    public class TestStory23_CreationQuestionnaire {...}
    D'où ma question : où faut-il mettre les fichiers qu'on veut atteindre dans les tests unitaire (JUnit 4) ?

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    Il faut distinguer deux types de ressources : internes ou externes au projet.

    L'accès aux ressources via la classe File est à réserver aux ressources externes.

    En passant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File image = new File("/images/beurre.gif");
    Le '/' de début indique que tu va chercher ton image à la racine du disque. Je doutes que ce soit ce que tu comptes faire. Il est préférable d'utiliser un chemin relatif.

    Pour accéder aux ressources internes, ce qui est ton cas, il faut passer par un appel au classloader. Ainsi, ton code fonctionnera pour aller chercher une image:
    • dans ton répertoire en période de développement,
    • dans le jar une fois ton projet packagé.


    Cela est décrit dans la FAQ.

  3. #3
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    Par défaut
    merci !
    et désolée pour cette question bête
    il est vraiment temps que je prenne des vacances !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Désactiver les contraintes pour des tests unitaires
    Par felipe2000fr dans le forum Hibernate
    Réponses: 1
    Dernier message: 06/04/2011, 09h50
  2. outil supportant les dialectes Xml pour des tests
    Par saw-next dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 28/06/2010, 17h12
  3. Réponses: 0
    Dernier message: 28/04/2010, 18h21
  4. Réponses: 7
    Dernier message: 15/12/2006, 09h22
  5. [Outils] Quelle stratégie pour des tests unitaires BDD
    Par hecatonchire dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 21/04/2006, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo