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

Maven Java Discussion :

Splitter Phase de Tests d'Integration en 2 ?


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 9
    Par défaut Splitter Phase de Tests d'Integration en 2 ?
    Bonjour à Tous,

    Maintenant qie j'ai bien isolé mes Tests Unitaires de mes Tests d'Intégration
    (voir: http://www.developpez.net/forums/d13...s-integration/ )...

    j'aimerais à présent distinguer 2 types de Tests d'Integration (rappel: je suis en environnement Spring, et multi-modules maven) :
    - ceux avec l'injection standard (runtime) de mes objets
    - ceux avec des injections de mock (mockito used) d'objets

    Pour cela, en regard des profils Maven, j'utilise les Profils Spring (depuis la 3.1).
    Selon le profil Maven (INTEGRATION ou MOCK), j'injecte via un propriété Maven tel ou tel profil Spring :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    [...]
    <plugin>
    	<groupId>org.apache.maven.plugins</groupId>
    	<artifactId>maven-surefire-plugin</artifactId>
    	<version>2.7.2</version>
    	<configuration>
    		<skipTests>${skip.unit.tests}</skipTests>
    		<systemProperties>
    			<property>
    				<name>spring.profiles.active</name>
    				<value>${spring.profiles.active}</value>
    			</property>
    		</systemProperties>
    		<excludes>
    			<exclude>**/itest/**/*.java</exclude>
    		</excludes>
    	</configuration>
    	<executions>
    	
                   <!-- SOIT cette "execution" là ("integration standard") ?.. --> 
                    <execution>
    			<id>surefire-integ-test</id>
    			<phase>integration-test</phase>
    			<goals>
    				<goal>test</goal>
    			</goals>
    			<configuration>
    				<skipTests>${skip.integration.tests}</skipTests>
    				<systemProperties>
    					<property>
    						<name>spring.profiles.active</name>
    						<value>${spring.profiles.active}</value>
    					</property>
    				</systemProperties>
    				<excludes>
    					<exclude>none</exclude>
    				</excludes>
    				<includes>
    					<include>**/itest/**/*.java</include>
    				</includes>
    			</configuration>
    		</execution>
    
                   <!-- SOIT cette "execution" là ("integration avec Mock") ?.. --> 
    		<execution>
    			<id>surefire-integ-test-withMock</id>
    			<phase>integration-test</phase>
    			<goals>
    				<goal>test</goal>
    			</goals>
    			<configuration>
    				<skipTests>${skip.integration.tests}</skipTests>
    				<systemProperties>
    					<property>
    						<name>spring.profiles.active</name>
    						<value>${spring.profiles.active}</value>
    					</property>
    				</systemProperties>
    				<excludes>
    					<exclude>none</exclude>
    				</excludes>
    				<includes>
    					<include>**/itest/mock/**/*.java</include>
    				</includes>
    			</configuration>
    		</execution>
    
    	</executions>
    </plugin>
    [...]
    
    <!-- Integration tests standard -->
    <profile>
    	<id>INTEGRATION</id>
    	<properties>
    		<config.classifier>INTEGRATION</config.classifier>
    		<filtering.file.name>local.properties</filtering.file.name>
    		
    		<skip.integration.tests>false</skip.integration.tests>
    		<skip.unit.tests>true</skip.unit.tests>
    		
    		<!-- Spring profile -->
    		<spring.profiles.active>runtime</spring.profiles.active>
    		
    	</properties>
    </profile>
    
    <!-- Integration tests with MOCK -->
    <profile>
    	<id>MOCK</id>
    	<properties>
    		<config.classifier>MOCK</config.classifier>
    		<filtering.file.name>local.properties</filtering.file.name>
    
    		<skip.integration.tests>false</skip.integration.tests>
    		<skip.unit.tests>true</skip.unit.tests>
    		
    		<!-- Spring profile -->
    		<spring.profiles.active>mock</spring.profiles.active>
    	</properties>
    </profile>
    [...]
    Problème :
    je ne sais pas trop comment configurer les 2 <execution> pour que soit l'une, soit l'autre soit lancée selon le profil Maven.... est-ce possible ?
    Peut-être que je m'y prends comme un manche !...

    Si vous avez une idée à ce sujet, n'hésitez pas
    (et en supposant que j'ai énoncé clairement ma problèmatique)

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Par défaut
    Bonjour,

    Je ne suis pas sûr d'avoir compris ce que tu voulais mais je tente

    Tout ce qui était de la configuration du plugin, commune aux deux exécutions, je l'ai mise dans <pluginManagement>. Ensuite chaque exécution spécifique à un profil a été mise dans un <profil>.

    Est-ce que c'est ça que tu voulais ?

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    	<build>
    		<pluginManagement>
    			<plugins>
    				<plugin>
    					<groupId>org.apache.maven.plugins</groupId>
    					<artifactId>maven-surefire-plugin</artifactId>
    					<version>2.7.2</version>
    					<configuration>
    						<skipTests>${skip.unit.tests}</skipTests>
    						<systemProperties>
    							<property>
    								<name>spring.profiles.active</name>
    								<value>${spring.profiles.active}</value>
    							</property>
    						</systemProperties>
    						<excludes>
    							<exclude>**/itest/**/*.java</exclude>
                                                    </excludes>
                                            </configuration>
                                    </plugin>
                            </plugins>
                    </pluginManagement>
            </build>
            <profiles>
                    <!-- Integration tests standard -->
                    <profile>
                            <id>INTEGRATION</id>
                            <properties>
                                    <config.classifier>INTEGRATION</config.classifier>
                                    <filtering.file.name>local.properties</filtering.file.name>
     
                                    <skip.integration.tests>false</skip.integration.tests>
                                    <skip.unit.tests>true</skip.unit.tests>
     
                                    <!-- Spring profile -->
                                    <spring.profiles.active>runtime</spring.profiles.active>
     
                            </properties>
                            <build>
                                    <plugins>
                                            <plugin>
                                                    <groupId>org.apache.maven.plugins</groupId>
                                                    <artifactId>maven-surefire-plugin</artifactId>
                                                    <executions>
                                                            <execution>
                                                                    <id>surefire-integ-test</id>
                                                                    <phase>integration-test</phase>
                                                                    <goals>
                                                                            <goal>test</goal>
                                                                    </goals>
                                                                    <configuration>
                                                                            <skipTests>${skip.integration.tests}</skipTests>
                                                                            <systemProperties>
                                                                                    <property>
                                                                                            <name>spring.profiles.active</name>
                                                                                            <value>${spring.profiles.active}</value>
                                                                                    </property>
                                                                            </systemProperties>
                                                                            <excludes>
                                                                                    <exclude>none</exclude>
                                                                            </excludes>
                                                                            <includes>
                                                                                    <include>**/itest/**/*.java</include>
                                                                            </includes>
                                                                    </configuration>
                                                            </execution>
                                                    </executions>
                                            </plugin>
                                    </plugins>
                            </build>
                    </profile>
                    <profile>
                            <id>MOCK</id>
                            <properties>
                                    <config.classifier>MOCK</config.classifier>
                                    <filtering.file.name>local.properties</filtering.file.name>
     
                                    <skip.integration.tests>false</skip.integration.tests>
                                    <skip.unit.tests>true</skip.unit.tests>
     
                                    <!-- Spring profile -->
                                    <spring.profiles.active>mock</spring.profiles.active>
                            </properties>
                            <build>
                                    <plugins>
                                            <plugin>
                                                    <groupId>org.apache.maven.plugins</groupId>
                                                    <artifactId>maven-surefire-plugin</artifactId>
                                                    <executions>
                                                            <execution>
                                                                    <id>surefire-integ-test-withMock</id>
                                                                    <phase>integration-test</phase>
                                                                    <goals>
                                                                            <goal>test</goal>
                                                                    </goals>
                                                                    <configuration>
                                                                            <skipTests>${skip.integration.tests}</skipTests>
                                                                            <systemProperties>
                                                                                    <property>
                                                                                            <name>spring.profiles.active</name>
                                                                                            <value>${spring.profiles.active}</value>
                                                                                    </property>
                                                                            </systemProperties>
                                                                            <excludes>
                                                                                    <exclude>none</exclude>
                                                                            </excludes>
                                                                            <includes>
                                                                                    <include>**/itest/mock/**/*.java</include>
    									</includes>
    								</configuration>
    							</execution>
    						</executions>
    					</plugin>
    				</plugins>
    			</build>
    		</profile>
    	</profiles>
    Romain.

  3. #3
    Membre habitué
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 9
    Par défaut
    Merci Romain pour tes suggestions.

    Effectivement, je n'avais pas pensé à ça.
    Le problème des config Maven ci-dessus sont que les 2 profiles d'intégration sont mutuellement exclusifs, quand bien même ils concernent tout deux des tests d'intégration qui devrait être tous lancés en même temps.

    Entre temps, j'ai trouvé une solution non basée sur Maven, pour switcher en environnement avec mock : dans tous les tests d'intégration qui font appel à une config mock, je sette la variable pour le Profile Spring:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class MockITest {
     
    	@BeforeClass
    	public static void setupClass() {
     
    		// Set Spring profile ?
    		System.setProperty("spring.profiles.active", "mock");
    	}
    }
    Et mes classes de Tests d'Intégration qui font du mocking doivent étendre cette classe.
    Pas super élégant, mais efficace et suffisant pour le moment,

    N.B: les classes qui étendent la classe MockITest peuvent elles aussi avoir une méthode BeforeClass spécifique, à condiiton qu'elle ait un autre nom...

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/02/2012, 19h28
  2. Jeu de Yam's phase de test
    Par Dendrite dans le forum VB.NET
    Réponses: 14
    Dernier message: 17/08/2010, 13h22
  3. Phase de test
    Par bilb0t dans le forum ASP.NET
    Réponses: 2
    Dernier message: 11/04/2007, 11h46
  4. [Darkness] CMS open source (phase de test)
    Par arcanis dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 11/02/2007, 14h53

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