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

Tests et Performance Java Discussion :

JUnit - Exécuter du code avant la suite de tests


Sujet :

Tests et Performance Java

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    171
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 171
    Points : 78
    Points
    78
    Par défaut JUnit - Exécuter du code avant la suite de tests
    Bonjour,

    Je réalise des tests unitaires avec JUnit 4. Je souhaiterai, avant de lancer ma suite de tests, exécuter du code (qui initialise la BD une seule fois pour tous les tests).
    Savez vous où je peux placer ce code ?
    Existe-t-il une annotation pour ça ?

    Cordialement,
    Nicolas

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 26
    Points
    26
    Par défaut
    Salut Nicolas,
    Utilisestu Spring avec tes JUNIT ?
    Si c'est le cas, j'ai fait la proposition d'ajout d'une annotation du genre dans leur jira :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @InjectScript("tonfichier.sql")
    public void tonTests{...}
    mais elle ne sera faite qu'en 3.x (de tete je dirai 3.1)

    Car j'ai moi-meme implémenté ce bout de code avec un listener pour le runner spring test.

    Sinon il y a avec l'injection programmatiquement avec jdbcTemplate directement dans ton test et une classe Helper que voici :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    @Service
    public class PersistentHelper {
     
        @Autowired  DossierDao dossierDao;
        @Autowired  TraitementDao traitementDao;
        @Autowired  ApplicationDao applicationDao;
        @Autowired ApplicationContext context;
     
        private JdbcTemplate jdbcTemplate;
     
        @Autowired 
        public PersistentHelper(DataSource datasource){        
            jdbcTemplate = new JdbcTemplate(datasource,true);                
        }
     
        public void executeSqlScript(String path)throws Exception{
            Resource resource = context.getResource(path);
            executeSqlScript(jdbcTemplate, new EncodedResource(resource,"UTF-8"));
        }
     
        public static void executeSqlScript(JdbcTemplate simpleJdbcTemplate,
                EncodedResource resource) throws DataAccessException {
     
            List<String> statements = new LinkedList<String>();
            try {
                LineNumberReader lnr = new LineNumberReader(resource.getReader());
                String script = JdbcTestUtils.readScript(lnr);
                char delimiter = ';';
                if (!JdbcTestUtils.containsSqlScriptDelimiters(script, delimiter)) {
                    delimiter = '\n';           
                }
                JdbcTestUtils.splitSqlScript(script, delimiter, statements);
                for (String statement : statements) {
                    try {
                        simpleJdbcTemplate.update(statement);
                    }
                    catch (DataAccessException ex) {
                            throw ex;
                    }
                }
            }
            catch (IOException ex) {
                throw new DataAccessResourceFailureException("Impossible d'ouvrir le script depuis " + resource, ex);
            }
        }
    Cette classe doit etre beanifier par spring & bien sur un datasource doit etre déclaré.

    Ensuite tu @autowired cet helper dans un test et tu l'appelles ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     @Test
      public void testGetSSS() throws Exception {
    	  persistentHelper.executeSqlScript("classpath:sql/dossiers.sql");
    	  (..suite du test .)
      }

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/09/2010, 17h30
  2. Avertisement avant exécution de code
    Par sam01 dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2010, 09h00
  3. [WD15] Plantage avant exécution du code du projet
    Par lazariel dans le forum WinDev
    Réponses: 3
    Dernier message: 13/08/2010, 13h47
  4. Exécution d'une ligne de code avant la fin d'exécution de la précédente
    Par Patrice Henrio dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 19/07/2010, 15h22
  5. Réponses: 19
    Dernier message: 13/01/2008, 23h33

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