Pergunta

Nós usamos a linha de comando para passar sobre as propriedades do sistema para o Java máquina virtual ao executar o nosso Hudson baseia-se em uma caixa de Linux. Costumava funcionar muito bem em 2.0.9 por uma vez que atualizado para 2.1.0 tem parou de funcionar completamente. As propriedades do sistema apenas nunca fazê-lo para a máquina virtual Java.

Eu criei um pequeno projeto de teste e de fato ele não funciona em todos.

Isso deve funcionar muito bem com Maven 2.0.9:

mvn2.0.9 -Dsystem.test.property=test test 

Mas isso irá falhar:

mvn2.1 -Dsystem.test.property=test test 

O código Java simplesmente que isso

assertTrue( System.getProperty("system.test.property") != null); 
Foi útil?

Solução

Eu não acho que este é um problema em qualquer Maven ou Surefire plug-in. Caso contrário, o infalível está se comportando de forma diferente. Parece que agora, quando Surefire bifurca os JVM , não vai tomar todas as propriedades do sistema do pai JVM.

É por isso que você deve passar o que quer que as propriedades do sistema que você deseja para os testes, usando argLine. Assim, ambos estes devem trabalhar

mvn2.1 -Dsystem.test.property=test test -DforkMode=never 

ou

mvn2.1 test -DargLine="-Dsystem.test.property=test"

Outras dicas

Eu experimentei isso com o Surefire plug-in. O plug-in infalível é executado no âmbito de um exemplo diferente JVM que é lançada pelo Maven. Os parâmetros de linha de comando são configuráveis ??sob a configuração-plugin surefile em seu pom.xml. Aqui está um exemplo da nossa configuração.

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.4.3</version>
            <!--
                    By default, the Surefire Plugin will automatically include all test classes with the following wildcard patterns:
                    "**/Test*.java" - includes all of its subdirectory and all java filenames that start with "Test". "**/*Test.java" -
                    includes all of its subdirectory and all java filenames that end with "Test". "**/*TestCase.java" - includes all of
                    its subdirectory and all java filenames that end with "TestCase".
                -->
            <configuration>
                <includes>
                    <include>**/*Test.java</include>
                </includes>
                <systemProperties>
                    <property>
                        <name>app.env</name>
                        <value>dev</value>
                    </property>
                     <property>
                        <name>oracle.net.tns_admin</name>
                        <value>${oracle.net.tns_admin}</value>
                    </property>
                </systemProperties>
            </configuration>
        </plugin>

Tenha cuidado para não misturar o arquivo de configuração com argumentos de linha de comando. arquivo de configuração (pom.xml) está substituindo todos os argumentos cmd. Então não configurar infalível plug-in dentro pom.xml se você quiser passar throught linha de comando como raisercostin explicou.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top