vrijdag 8 december 2017

Meerdere testomgevingen configureren voor je Maven Cucumber-Java project dmv profiles

Om tegen verschillende testomgevingen aan te kunnen testen heb ik een opzet gemaakt dmv profiles in de pom file van een Maven project.

Door onderstaande aan je maven file toe te voegen kun je met een extra parameter in je Maven commando aangeven met welke omgeving config.properties de testen moeten draaien. Door meerdere profiles met verschillende <id> neer te zetten in de POM kun je aangeven welke config.properties vanuit je resources naar je target directory gekopieerd moet worden.

Dit kan erg handig zijn als je meerdere builds in bijvoorbeeld Jenkins wilt configureren voor meerdere testomgevingen.

Bronvermelding:

Maven commando met juiste parameter (-Ptst) om testomgeving te bepalen:
mvn clean test -Ptst

Voorbeeld profile (TST omgeving) die opgenomen kan worden in je Pom file:
<profiles>
        <!-- TST profile -->
        <profile>
            <id>tst</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>generate-test-sources</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <tasks>
                                        <delete file="target/test-classes/config.properties"/>
                                        <copy file="src/test/resources/config.tst.properties"
                                              tofile="target/test-classes/config.properties"/>
                                    </tasks>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.1</version>
                        <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.20.1</version>                
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.maven.surefire</groupId>
                                <artifactId>surefire-junit4</artifactId>
                                <version>2.20.1</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
                <finalName>TstEnvironment</finalName>
            </build>
        </profile>
</profiles>