Existe uma maneira de separar longa duração (por exemplo, testes de stress) para que eles não são executados por padrão no Maven 2?

StackOverflow https://stackoverflow.com/questions/251730

Pergunta

Nós tivemos uma necessidade contínua aqui que eu não consigo descobrir como endereço utilizando o estoque Maven 2 ferramentas e documentação.

Alguns dos nossos desenvolvedores têm alguns testes JUnit muito tempo em execução (geralmente testes de estresse) que sob nenhuma circunstância deve ser executado como uma parte regular do processo de construção / construção noturno.

É claro que pode usar a infalível do plug-in mecanismo de exclusão e apenas punt-los a partir da compilação, mas o ideal é que adoraria algo que permitiria que o desenvolvedor para executá-los à vontade através Maven 2.

Foi útil?

Solução

Normalmente você adicionar um perfil para a configuração do Maven que executa um conjunto diferente de testes:

executar este com mvn -Pintegrationtest instalar

    <profile>
        <id>integrationtest</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <argLine>-client -Xmx896m -XX:MaxPermSize=192m</argLine>
                        <forkMode>once</forkMode>
                        <includes>
                            <include>**/**/*Test.java</include>
                            <include>**/**/*IntTest.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/**/*SeleniumTest.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <activation>
            <property>
                <name>integrationtest</name>
            </property>
        </activation>
    </profile>

Outras dicas

Adicionando a krosenvold resposta 's, para garantir que não haja um comportamento inesperado, certifique-se você também tem um perfil padrão que está ativa por padrão que exclui a integração ou stresstests você deseja executar no seu perfil especial.

<profile>
    <id>normal</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/**/*IntTest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

Você precisará criar um perfil como esse, simplesmente listar fora-plugin infalível de um perfil substituirá o perfil deveria ser selecionado com:

mvn -P integrationtest clean install

Use um teste de integração plug-in, como o Super úteis Integração Teste Thingy para testes de Integração separados (longa corrida, sistêmica) da unidade de teste (puristas dizem que 30 segundos no máximo para todos os testes de unidade verdadeiros para executar). Faça dois pacotes Java para os testes de unidade contra os testes de integração.

Então não se ligam este plugin para uma fase (ciclo de vida do maven normal) e apenas executá-lo quando ele é chamado explicitamente como um alvo, assim: mvn shitty:clean shitty:install shitty:test

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>shitty-maven-plugin</artifactId>
  </plugin>
</plugins>

Desta forma, seus desenvolvedores normais não será afetado, e você vai ser capaz de executar testes de integração sob demanda.

Outra opção é ter o teste de estresse detectar que está sendo executado em maven e executar apenas uma ou duas vezes. ou seja, se transformar em um teste funcional regular. Desta forma, você pode verificar o código ainda é bom, mas não executado por um longo tempo.

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