Pitest (também conhecido como PIT) é um sistema de teste de mutação de última geração para Java e JVM.
Leia tudo sobre isso em https://pitest.org
Lançamentos
1.17.2
- #1362 Excluir lambdas em métodos excluídos por anotação (obrigado @see-quick)
1.17.1
- #1353 Alertar sobre futuras remoções de metas de SCM
- #1355 Atualizar ASM para suporte java 24
- #1359 Remover o uso do gerador toString baseado em reflexão
- #1361 Suporte inicial para testes de módulos cruzados no maven
1.17.0
- #1348 Estender o ponto de extensão da transformação
- #1349 Melhore a estabilidade do powermock
1.16.3
- #1345 Detecção de execução atrasada aprimorada em código de inicialização estática
- #1347 Adicionar automaticamente diretórios de origem kotlin padrão para projetos maven
1.16.2
- #1340 Mostrar testes de cobertura para mutantes sobreviventes em relatório HTML (obrigado @vivganes)
- #1342/#1343 Corrija o registro enganoso de caminhos históricos (obrigado @vivganes)
- #1344 Mutação do código de execução atrasada em enums e singletons
1.16.1
- #1329 Evitar conflitos de versão com objetivo agregado quando plug-ins usam jackson
1.16.0
- #1311 - Inclui coleções não modificáveis armazenadas diretamente em campos no filtro
+funmodifiablecollection
para código defensivo - #1319 - Use variáveis de ambiente da configuração infalível
- #1322 - Adicione automaticamente -ea para habilitar asserções
- #1321 - Expanda a interface do BuildVerifier
A alteração da API em #1321 é compatível com versões anteriores, mas plug-ins escritos em 1.16.0 podem não funcionar com versões anteriores.
1.15.8
- #1310 Filtrar mutações para Collections.unmodifiable*
- #1309 Substituir campos em argLines importados da configuração infalível
- #1308 Bump maven vcs versões
A filtragem para #1310 está desativada por padrão. Para ativá-lo, adicione a string de filtro +funmodifiablecollection
.
1309 adiciona uma nova propriedade maven parseSurefireArgLine
. Isso é definido como verdadeiro por padrão, mas a análise infalível da linha de argumento agora pode ser desativada definindo-a como falso.
1.15.7
#1305 Cobertura não registrada para código no nome do pacote com.sun*
Um filtro destinado a coletar classes JDK herdadas no pacote "com.sun.*" estava faltando um '
, resultando em nenhuma cobertura de código sendo registrada se o código em teste estivesse em um pacote começando com "sun".
1.15.6
- #1295 remover temporariamente o rastreamento dinâmico de chamadas
A chamada de rastreamento de chamada dinâmica para código inicializador estático será reintroduzida quando uma lógica adicional para suprimir a filtragem de mutação para código de execução atrasada for implementada.
1.15.5
- #1292 Linhas arg retiradas da configuração infalível não têm propriedades substituídas
1.15.4
- #1288 - Novo ponto de extensão para permitir formatos de exportação de cobertura personalizados
- #1289 - Analisar configuração argline da configuração infalível
- #1274 Siga invocar chamadas dinâmicas ao detectar métodos somente de inicializador estático
Observe que os usuários maven que anteriormente precisaram duplicar os parâmetros argline entre jvmArgs
e os parâmetros argline
do Surefire e do pitest podem precisar ajustar sua configuração durante a atualização. As inscrições fornecidas ao surefire agora serão adicionadas automaticamente ao pitest.
1.15.3
- #1271 - Verifique novamente o status do tópico antes de marcar o lacaio como morto
1.15.2
- #1268 - Filtrar verificações não nulas do Lombok
- #1267 – Expanda a API de teste para permitir relatórios de erros durante a verificação de teste
#1267 garantirá que erros anteriormente ocultos encontrados pelo plugin JUnit5 serão agora relatados. Esta é uma alteração de API compatível com versões anteriores. Não terá efeito até que o plugin JUnit5 seja atualizado para usar a API expandida. O plugin atualizado não será compatível com versões anteriores do pitest.
1.15.1
- #1260 Atualização para ASM 9.6 para suporte Java 22
- #1261 Não erre em arquivos de histórico mais pitest < 1.15.0
1.15.0
- #1253 suprime estatísticas de cobertura quando a redução do teste de histórico está habilitada
- #1252 adicionar parâmetro extrafeatures para maven para permitir que recursos sejam adicionados na linha de comando sem substituir a lista existente
- #1251 expandir interfaces de histórico (mudanças significativas)
- #1250 melhora a mensagem de erro ao não analisar strings de recursos
- # 1248 ajuste de desempenho - atraso na identificação da classe de teste
- #1247 remoção de código legado
Como resultado das alterações importantes da API em # 1251, o plugin arcmutate kotlin deve ser atualizado para 1.1.0 ao atualizar para o pitest 1.15.0
1.14.4
#1246 Priorize o teste de morte anterior ao usar arquivos de histórico
1.14.3
- #1239 Suporte grupos excluídos separados por vírgula (obrigado @johnathana)
- #1243 Ordene explicitamente o caminho de classe no arquivo de histórico para garantir a consistência entre as execuções
- #1245 Evite registros confusos de execuções de análises incrementais simuladas
1.14.2
- #1221 - Cálculo percentual unificado (obrigado @Vampire)
- #1218 - Segurança de thread para coleta de resultados quando testes são executados em paralelo (obrigado @Vampire)
- #1225 - Evitar erros quando arquivos não compactados forem incluídos no caminho de classe
- #1229 - Mutação de Iteráveis para lista vazia
- #1227/1232 - Correção da interface MethodMutator para depender de tipos abstratos
1.14.1
- #1215 Aplicar reescritas de cobertura ao agregar relatórios
- #1219 Certifique-se de tentar primeiro aplicar a filtragem de recursos (obrigado @Vampire)
1.14.0
- #1213 Filtrar equivalente dividido por -1 mutantes matemáticos
- #1212 Adicionar automaticamente o iniciador de plataforma junit
#1212 Resolve em grande parte o problema de manter a versão pitest-junit5-plugin sincronizada com a versão junit5 para usuários maven.
Quando usado com 1.2.0 do plugin pitest-junit5, o pitest agora selecionará automaticamente uma versão do junit-platform-launcher que seja compatível com a versão do junit5 usada pelo sistema em teste.
Os problemas permanecem para usuários gradle que ainda podem encontrar compatibilidades de API ao usar 1.2.0 do plugin pitest-junit5. No entanto, agora eles podem ser resolvidos adicionando manualmente a versão correta do junit-platform-launcher ao caminho de classe.
Espera-se que uma versão futura do plugin pitest gradle implemente uma correção semelhante à solução pitest-maven.
1.13.2
- #638 Certifique-se de que % apareça como 100 quando todos os mutantes forem mortos (obrigado @Vampire)
- #1197 Mostrar informações de inicialização ao fazer login definido como VERBOSE_NO_SPINNER (obrigado @Vampire)
- #1198 Melhorias no registro (obrigado @Vampire)
- #1200 Avisar se a execução de testes paralelos estiver habilitada durante a coleta de cobertura (obrigado @Vampire)
- #1199 Mude para System.nanoTime para tempos de teste (obrigado @Vampire)
- #1207 Suporte para remoção de anotações em nível de classe
1.13.1
- #1194 Suporte
**.
padrão em globs (obrigado @Pfoerd)
1.13.0
- #1188 Permitir que mutadores produzam múltiplas mutações distintas
- #1190 Fornecer priorizador de teste para interceptadores
- #1191 Habilitar mutação de anotações de métodos e campos
1.12.0
- #1186 Novos pontos de extensão
1.11.7
- #1178 Vírgulas na eliminação do nome do teste quebram a exportação de csv (obrigado @Bonajo)
- #1177 Aplicar recursos em uma ordem consistente
- #1176 Atualização para ASM 9.5
1.11.6
- #1171 Evitar instanciação dupla de recursos
- #1170 Atualizar links para https (obrigado @romani)
1.11.5
- #1167 Corrigir desempenho ruim de análise estática para métodos grandes
- #1166 Atualize o link mais interessante para https (obrigado @romani)
1.11.4
- #1161 Evitar clinit duplicado quando clinit sintético estiver presente
- #1162 Adicionar automaticamente diretórios de origem kotlin ao maven quando presente
1.11.3
- #1159 Incluir apenas classes mutantes nas estatísticas de cobertura de linha
1.11.2
- #1157 Relatar apenas linhas de código de destino
As estatísticas de cobertura de linha relatadas no console incluíam linhas de código para todo o projeto, mesmo quando filtros foram aplicados. Isto resultou em pontuações de cobertura dramaticamente baixas.
1.11.1
- #1156 Impedir que linhas sintéticas sejam contadas na cobertura
1.11.0
- #1138 Não altere a transição redundante para casos de switch padrão
- #1150 Novos pontos de extensão
Observe que o nº 1150 inclui alterações importantes na interface que podem exigir atualizações para plug-ins de terceiros.
1.10.4
- #1134 Adicionar parâmetro
excludedRunners
à interface de linha de comando e Ant - #1131 Suporta sintaxe de avaliação de propriedade tardia infalível para linhas de argumento
1.10.3
- #1128 Correção de bug - linhas com entradas de depuração repetidas são contadas duas vezes
1.10.2
- #1125 Correção de bug – métodos lambda sintéticos não tratados como linhas de código
1.10.1
- #1124 Corrigido bug introduzido na versão 1.10.0 onde métodos de ponte eram tratados como linhas de código válidas
1.10.0
- #1067 Melhor suporte Quarkus e Roboelétrico
- #1116 Opção para excluir as linhas 0 e 1 de todas as classes
- #1118 Detectar plug-ins ausentes
Como resultado do #1067, é importante que as mutações sejam criadas apenas para uma única classe para cada JVM. O ponto de extensão MutationGrouper
foi, portanto, removido, pois permitiu que esta restrição fosse violada. Quaisquer plug-ins de terceiros que usem esta extensão não são mais suportados.
As versões também incluem diversas alterações nas estruturas de dados internas. Quaisquer plug-ins de terceiros que dependam dessas estruturas podem precisar ser atualizados.
1116 fornece uma maneira grosseira de excluir código gerado automaticamente não capturado por outros filtros do pitest. Ele está desabilitado por padrão, pois pode excluir código válido para mutação em algumas situações, mas pode ser habilitado adicionando a string de recurso +nofirstline
.
1.9.11
- #1105 Agregador resolve arquivo errado para arquivos kotlin fora do pacote com o mesmo nome
- #1111 Corrigir erro de digitação no log (obrigado @wangbo15)
1.9.10
- #1106 Não substitua Map.of por Collections.emptyMap
- #1109 Relaxe a verificação de depuração do arquivo de origem
1.9.9
- #1098 Incluir valores de caso nas descrições de mutação de switch
1.9.8
- #1094 Pesquise arquivos de origem fora dos diretórios de pacotes
Adiciona suporte para linguagens como Kotlin, onde os arquivos de origem podem não estar em uma estrutura de diretórios que corresponda ao seu pacote. Observe que se o mesmo nome de arquivo ocorrer em mais de um local, o pitest não pode garantir a resolução do arquivo correto.
1.9.7
- #1091 - Nomes de classes de escape em XML de cobertura
1.9.6
- #1092 - Atualização para ASM 9.4
- #1091 - Escape corretamente do XML de cobertura
- #1088 - Remover parâmetro de distância de dependência não utilizado
- #1085 - Não produza relatórios de carimbo de data/hora por padrão
Observe que #1085 altera o comportamento padrão para que os relatórios não sejam mais gravados em diretórios com carimbo de data/hora por padrão. Se você precisar desse comportamento, precisará ativá-lo explicitamente.
1.9.5
- #1078 - Interface do Alter Config Updater
- #1079 - Evite o log do JBoss por padrão
1078 é uma alteração importante na interface, mas está incluída em uma versão pontual, pois acredita-se que atualmente não há clientes externos.
1.9.4
- #1063 – Melhorar a filtragem de mutantes de retorno equivalentes
- #1064 - Remover mutadores de valor de retorno herdados e grupo de padrões antigos
- #1066 - Expanda a filtragem do inicializador estático
- #1070 - Remova o agente jacoco se estiver presente no argline
1.9.3
- #1052 - Suporte à propriedade maven argLine e argLines de string única
- #1054 - Fornece controle sobre a adição automática de -Djava.awt.headless=true
- #1055 - Opção para definir automaticamente o número de threads
- #1056 - Definir tempo limite para comunicação de soquete
- #1058 - Definir padrões para codificação de entrada e saída para API programática
1054 Move o suporte de adição automática headless=true (para evitar que o foco do teclado seja roubado em Macs) para um recurso. Ele está habilitado por padrão, mas pode ser desabilitado adicionando -MACOS_FOCUS
à string de recursos.
1055 adiciona a opção de adivinhar o número apropriado de threads para a máquina atual adicionando +auto_threads
à string de recursos. Esta opção está desabilitada por padrão e projetada para uso local. Não é recomendado para uso em um servidor de CI.
1.9.2
- #1050 - Verifique se os lacaios estão vivos para evitar travamentos do processo
1.9.1
- #1047 Mitigação para travamentos intermitentes de processos
1.9.0
- #1035 – Melhorar o consumo de memória de cobertura
- #1038 - Suporte ao plug-in do site Maven 3.12.0+ (obrigado IOs)
- #1040 - Cálculo de cobertura JUnit 5 mais rápido
- #1040 - Remover parâmetro
dependencyDistance
Como resultado do #1040, quaisquer plug-ins de teste externos (por exemplo, JUnit 5, TestNG, acelerador arcmutate) devem ser atualizados para uma versão compatível (1.0.0) durante a atualização.
Os arquivos de histórico de versões anteriores são incompatíveis e devem ser excluídos durante a atualização.
Versões mais antigas
1.8.1
- #637 - Suporta diferentes codificações de entrada e saída (obrigado @qxo)
- #705 - Permitir + em caminhos de arquivo (obrigado @ali-ghanbari)
- #903 - Filtrar mutantes em construtores singleton
- #1025 - Filtragem de retrabalho de String Switch
- #1027 - Retrabalhar a filtragem de declarações e remover o mecanismo de filtro herdado
- #1030 - Filtrar mutações inúteis do switch enum
1.8.0
- #1017 - Melhorar a detecção de loop infinito estático
- #1020 - Retrabalhar a biblioteca de correspondência NFA e tentar filtrar recursos
- #1022 - Suporte ao teste quarkus
1.7.6
- #1008 Atualize o ASM para suporte inicial ao Java 19
- #1016 Falha de forma limpa quando nenhum plugin de teste funcional é fornecido
- #1015 Mover o suporte TestNG para fora da base de código principal
Como resultado do #1015, o plugin TestNG agora deve ser configurado ao usar o pitest em bases de código testadas pelo TestNG. Nas versões anteriores, o suporte era incluído automaticamente.
1.7.5
- #625/#983 Agregação de relatório corrigida (obrigado @therealryan e @aurelien-baudet)
- #985 Lidar com exclusões infalíveis vazias
- #993 Mover mutadores de RV para plugin externo
- #994 / #995 Filtrar mutantes verdadeiros de retorno em caixa equivalente em blocos try
- #968/997 Melhorar a filtragem de mutantes de retorno vazio equivalentes
- #999/1003 Novo parâmetro para localizar raiz de projetos multimódulos
Como resultado do nº 993, qualquer pessoa que deseje usar os operadores de RV orientados para pesquisa deve configurar o plugin pitest-rv, no entanto, esses mutadores não são recomendados para uso geral.
1.7.4
- #965 - BigDecimal Mutator (obrigado @MarcinNowak-codes)
- #750 - Suporte -DskipTests na linha de comando (obrigado @marwin1991)
1.7.3
- #952 Mutate map retorna para
emptyMap
em vez de null - #954 Permitir que mutadores sejam excluídos
- #957 Filtrar mutações equivalentes para Boolean.TRUE e Boolean.FALSE
1.7.2
- #943 Alterar mutadores padrão - substituir negação condicional por remoção condicional
- #946 Mutate stream retorna para stream vazio em vez de nulo
1.7.1
- #932 Melhorar as descrições de mutação de switch
- #934 Configure o detalhamento da saída do console
- #940 Ocultar recursos internos
- #942 Correção para operadores de mutação de terceiros não adicionados ao classpath do cliente
- #939 Melhorar o cache de recuperação de bytecode
1.7.0
- #923 Mudanças na interface interna
- #930 Mutadores conectáveis
Devido a alterações internas, alguns plugins de terceiros podem ser incompatíveis com esta versão.
Todos os arquivos de histórico devem ser excluídos antes da atualização.
Os nomes dos mutadores de remoção condicional mudaram ligeiramente como resultado do #930 e podem precisar ser atualizados em scripts de construção se ativados explicitamente.
1.6.9
- #922 Filtrar mutantes stream.empty equivalentes em chamadas flatMap
- #921 Garantir a ordem dos operadores de mutação
- #919 Filtrar mutações indesejadas em registros java
1.6.8
- #917 - Adicionar método para recuperar todos os IDs de mutadores para pitclipse e outras ferramentas
- #913 - Aumente o ASM para 9,2
1.6.7
- #897 Corrigida descrição ao substituir valor por conjunto vazio
- #900 Suporte a vários mecanismos de teste
- #822 Corrigir regressão do NPE ao ler o manifesto do caminho de classe
- #798 Corrigida regressão do suporte ao parâmetro jvmArgs via maven
- #797 Corrigida a regressão da cobertura de linha no console
Como resultado do #900, o parâmetro testPlugin
está extinto, mas o pitest continuará a aceitá-lo sem erros nesta versão. Pitest usará qualquer mecanismo de teste fornecido no caminho de classe, recorrendo ao suporte JUnit4 integrado quando outros mecanismos de teste não puderem lidar com a classe.
1.6.6
- #891 - Corrigir o desempenho do histórico
- #889 - Não verifique o histórico do caminho de classe quando a opção não for fornecida
- #887 - Corrigir CSS para tempos limite e erros de memória
- #888 - Remover máximo de mutantes extintos por parâmetro de classe
- #890 - Remover parâmetro de inicializadores estáticos de mutação extinta
1.6.5
- #882 Evite executar testes quando não houver possibilidade de mutantes
1.6.4
- #862 Atualizar ASM para Java 16
1.6.3
- #853 Corrigir verificação de recursos que não diferenciam maiúsculas de minúsculas
- #855 Disponibilizar dados de cobertura para interceptadores
- #857 Passe dados stderr/out por linha (obrigado @kgeilmann)
- #858 Correção do teste que não falha quando maxSurviving é 0 (obrigado @alexkoltz)
- #860 Corrija mutações indesejadas na tentativa com recursos em java 11+
1.6.2
- #770 e #746 Corrigir NPE durante o estágio de cobertura (obrigado @LaurentTho3)
- #849 Torne os nomes dos recursos insensíveis a maiúsculas e minúsculas
- #844 Estenda o sistema de recursos para funcionar com ouvintes
- #842 Disponibilize opções de relatório para os ouvintes
1.6.1
- Automatize a liberação para o maven central
- #774 Estatística de resistência do teste (obrigado @alex859)
- #798 Habilite que argumentos jvm sejam passados na linha de comando (obrigado @yfrolov)
- #797 Adicionar cobertura de linha ao console (obrigado @qxo)
- #822 Mitigar NPE em dependência acidental (obrigado @szpak)
1.5.2
- #749 Suporte ANT para a opção fullMutationMatrix (obrigado @ayaankazerouni)
- #752, #755, #757 Problemas de versão e melhorias no código legado (obrigado @AlexElin)
- #758 Lata correta para pacotes de teste (obrigado @nicerloop)
- #765 Corrigir análise incremental para TestNG (obrigado @StefanPenndorf)
1.5.1
- #737 Adicionar sinalizador skipFailingTests à ferramenta de linha de comando (obrigado @szpak)
- #739 Corrigir erro de digitação na mensagem de erro (obrigado @vmellgre)
- #745 Melhora a mensagem de erro quando o junit não está no caminho de classe (obrigado @szpak)
- #748 Aumente o ASM para 8.0 para suporte a Java 14
1.5.0
- #556 - Não altere os construtores enum
- #726 - Certifique-se de que a cobertura do inicializador estático seja registrada
- #734/#735/#736 - Substitua interfaces legadas por API Java (obrigado @AlexElin)
1.4.11
- #683 - Filtre try-with-resources antes de filtrar o código embutido (obrigado @Vampire)
- #686 - Não imprima o nome da classe duas vezes para unidades de teste não divisíveis (obrigado @Vampire)
- #672 - Não inclua o diretório atual no caminho de classe do minion (obrigado @Vampire)
- # 692 - Adicione property='skipPitest' para pular o plugin maven do atributo (obrigado @cjgwhite)
- #697 - Compatibilidade com TestNG 7.0.0 (obrigado @kris-scheibe)
- #666 - UOI4 reporta nome de campo modificado (obrigado @LaurentTho3)
- #716 - Aumente o conjunto para 7.3.1 (obrigatório para Java 14)
- #710 - Use o novo modificador definido por padrão
1.4.10
- #534 Blocos menores para direcionamento de teste mais preciso (obrigado @jon-bell)
- #664 Corrigir chave do mapa A0D2 (obrigado @Vampire)
- #656 Caracteres de escape em métodos init para relatório HTML (obrigado @Vampire)
- #404 Filtrar mutações indesejadas para chamadas Objects.requireNonNull geradas pelo compilador
1.4.9
- #613 / #623 - Correção de problemas de powermock em (obrigado @jon-bell)
- #614 - Mensagem de erro aprimorada quando não há plugin de teste (obrigado @szpak)
- #620 - Suporta processadores de anotação como o Micronaut que não definem o nome do arquivo de depuração
1.4.8
- #597 Correção de bug na cobertura quando há grande número de aulas (obrigado @jon-bell)
- #601 Evite roubar o foco do teclado no macOS (obrigado @maxgabut)
1.4.7
- #545 – Cálculo de cobertura mais rápido (obrigado @jon-bell)
1.4.6
- #580 – atualização para ASM 7.1
- #573 - Suporte Ant para
testPlugin
e failWhenNoMutations
(obrigado @mduggan) - #555 - Permitir elementos vazios na configuração do maven (obrigado @maxgabut)
1.4.5
- #557 - Problemas em execução no Java 8
1.4.4
- #518 - Mutador Experimental BigInteger (obrigado @ripdajacker)
- #513 - Classifique os mutadores no relatório HTML (obrigado @ThLeu)
- #553 - Mutadores clássicos da literatura (obrigado @LaurentTho3)
- #528 - Adicionada opção skipFailingTests do plugin maven (obrigado @nicerloop)
1.4.3
- #510 - Matriz de teste de mutação computacional (obrigado @nrainer)
- #519 - Suporte Java 11
1.4.2
- #500 - Suporte para caminhos de classe grandes com a nova opção
useClasspathJar
(obrigado @jqhan)
1.4.1
- #446 - Ignore diretórios vazios ao agregar relatório (obrigado @maxgabut)
- #457 - Corrigir diretório base em projetos multimódulos (obrigado @sarahBuisson e @giggluigg)
- #471 - Suporte básico a Java 11
- #477 - Byte nulo em xml (obrigado @maxgabut)
- #480 - Permitir agregação de relatórios com carimbo de data/hora (obrigado @maxgabut)
- #495 - Mover resumo para o final da saída do console (obrigado @pedrorijo91)
- #499 – Correção para mutantes equivalentes em novos mutadores de valor de retorno
1.4.0
- #445 - Aumente a versão java mínima suportada para 8
- Mudar para ASM 6.1.1
- #448 Relatório agregado baseado em módulo (obrigado @sarahBuisson)
- #462 Nomes de testes de escape em xml de cobertura (obrigado @maxgabut)
1.3.2
- #433 - Relatórios agregados via maven (obrigado @rchargel)
- #438 - Filtrar testes no nível do método (obrigado @ftrautsch)
- #439 - O modificador de retorno primitivo não lida com bytes
- #380 - Remova a dependência do xstream para melhorar o suporte ao java 9
- #414 - Substitua o armazenamento de histórico xstream (obrigado @kiftio)
Observe ao atualizar que os arquivos de histórico gerados por versões anteriores não são compatíveis com 1.3.2 e acima.
1.3.1
- #434 - Aviso de segurança XStream
1.3.0
- #196 - Aumente a versão mínima do Java para 7
- #425 - Amplie a detecção para cada
- #428 - Adicionar parâmetro
excludedTestClasses
- #379 - Remover suporte para inicializadores estáticos mutantes
- #432 - Adicionar funcionalidade de plugin de exportação ao pitest
- #427 - Melhores mutadores de valores de retorno
- #429 - Simplifique a API de teste
428 altera o comportamento existente do filtro excludeClasses. Anteriormente, isso excluía classes de serem mutadas e executadas como testes que podem exigir alterações para algumas pessoas durante a atualização.
Como resultado de 429 testes TestNG não serão mais detectados automaticamente - o novo parâmetro testPlugin
deve ser explicitamente definido como "testng".
1.2.5
- #407 - A meta SCM não pode ser executada no módulo (obrigado @sbuisson)
- #256 - O estilo inline viola a Política de Segurança de Conteúdo (obrigado @kiftio)
- #403 - Nenhum CSS no relatório HTML visualizado por Jenkins (obrigado @kiftio)
- #409 - Mutação com base nas mudanças nas ramificações (obrigado @sbuisson)
- #418 – Evite incrementos de loop for
- #424 – Evite para cada código
- #389 - Ampliar correspondência de verificações nulas implícitas
1.2.4
- #397 - Relatar motivos pelos quais os módulos maven foram ignorados
- #389 - Filtrar verificações nulas getClass de lixo em lambdas
- #400 – Atualização para ASM 6.0
1.2.3
- Atualização para ASM 6 para suporte a Java 9
- #388 - Marcar o plugin maven como threadsafe
- #362 - Suprimir mutante equivalente comum em métodos iguais
1.2.2
- #367 - A análise estática não consegue encontrar classes principais em alguns projetos
1.2.1
- #347 - Evite código gerado automaticamente (por exemplo, por lombok) anotado com @Generated
- #285 - Evite condicionais geradas pelo compilador na string de ativação. (obrigado @Kwaq)
- #218 - Novo "receptor nu"/mutador de cadeia de método. (obrigado @UrsMetz)
- #354/#356 - Novo ponto de extensão mais alterações para reduzir o custo de acesso aleatório ao bytecode para análise estática
- #353 - Detecção de código inicializador estático aprimorada
- #364 – Filtrar loops infinitos via análise estática
- #365 - Sistema de configuração de plugins
(A observação nº 347 não detectará javax.annotaion.Generated
, pois possui apenas retenção de origem.)
1.2.0
- #318 - Separar o código do processo principal do caminho de classe do cliente de compartilhamento de código
- #295 - Ignorar testes abstratos TestNG
- #215 – Seleção automática de classes alvo para maven
- #314 - Não falhe em módulos maven sem testes ou código
- #306 – Não falhe quando apenas interfaces estiverem no conjunto de alterações
- #325 – Classe anônima no teste Spock causando erro
- #334 - Compatibilidade com versões recentes do TestNG
- #335 – Cobertura incorreta com powermock
Nota - a partir desta versão, o plugin maven determinará automaticamente quais classes sofrer mutação em vez de assumir que os nomes dos pacotes correspondem ao ID do grupo.
1.1.11
- #269 – Não é possível quebrar a construção em 1 mutante
- #271 - Incluir descritor de método na cobertura de linha
- #170 - Exclusão pelo executor JUnit
- #291 - Lidar com exclusões vazias
- #287 - Verifique a hierarquia de classes para anotações
- #289 - Opção para fornecer classpath do arquivo
1.1.10
- #260 - Suporte inicial para mutação de código Kotlin
- #264 - Suporte para yatspec runner (obrigado @theangrydev)
- Quebrar a construção quando mais do que
maxSurviving
mutantes sobreviverem
1.1.9
- #132 - Permitir análise apenas de arquivos tocados no último commit (obrigado Tomasz Luch)
1.1.8
- #239 - Fornece um atalho para definir arquivos de histórico via maven
- #240 - Suporte para regexes (obrigado sebi-hgdata)
- #243 – Use portas efêmeras para se comunicar com lacaios
1.1.7
- #196 - Aumente a versão mínima do Java para 1.6
- #231 - Processo trava
1.1.6
- #10 - Adicionar meta de relatório maven (obrigado jasonmfehr)
- #184 - Remover recurso de arquivo de projeto não documentado
- #219 - Melhoria de desempenho para geração de relatórios (obrigado tobiasbaum)
- #190 - Permitir propriedades personalizadas para plugins
Observe que esta versão contém um problema conhecido (#231). Por favor, atualize.
1.1.5
- Correção para #148 – Stackoverflow com provedores de dados TestNG ao usar JMockit
- Correção para #56 – Não relatar incompatibilidades de junit
- Correção para #174 – linecoverage.xml inválido com inicializadores estáticos
- Correção para #183 – Não é possível executar testes GWTMockito
- Correção para #179 -
includeLaunchClasspath=false
quebrado no Windows - #173 - Leia exclusões e grupos da configuração infalível do maven
1.1.4
- # 157 - Sinalizador maven -DskipTests de suporte (obrigado lkwg82)
- Correção para #163 – Não deve incluir árvore de teste no limite de cobertura
- #166 - Permitir exclusões de classpath para plugin maven (obrigado TomRK1089)
- #155 - Restaurar a compatibilidade do Java 5
- Correção para #148 – Problema com JMockit + TestNG (obrigado estekhin e KyleRogers)
1.1.3
- Correção para #158 – Testes excluídos incorretamente de mutantes
- Correção para #153 – Plugin SCM quebrado para maven 2
- Correção para #152 – Não funciona com IBM jdk
1.1.2
- Correção para #150 – cobertura de linha abaixo do relatado
1.1.1
- Cobertura baseada em bloco (correções 79/131)
- Fim do suporte para execução em Java 5 (bytecode Java 5 ainda suportado)
- Ignorar sinalizador para módulos maven (#106)
- Pare de declarar TestNG como uma dependência
- Novo modificador de propagação de parâmetros (obrigado UrsMetz)
1.1.0
- Esquema de mudança para identificação de mutantes (ver #125)
- Suporta APIs de teste alternativas via sistema de plugins
- Relatar erro quando o nome do modificador fornecido não corresponde (obrigado artspb)
- Relatar códigos de saída do processo filho de cobertura (obrigado KyleRogers)
- Trate os testes JUnit com anotação ClassRule como uma unidade (obrigado devmop)
Observe que quaisquer arquivos de histórico armazenados ou resultados de sonar serão invalidados por esta versão.
1.0.0
- Esquema de numeração de versão de mudança
- Atualize para ASM 5.0.2
- Correção para # 114 - falha na execução do Java 8 quando o sinalizador -parameters está definido
- # 99 Suporta propriedade adicionalClasspathElements no plugin maven (obrigado artspb)
- # 98 Não altere o Java 7, tente com recursos (obrigado @artspb)
- # 109 modificador condicional de remoção estendida (obrigado @vrthra)
0,33
- Mude para o Github
- Atualização do ASM para suportar bytecode Java 8 (graças a "iirekm")
- Suporte parcial para categorias JUnit (graças a "chrisr")
- Novo modificador de remoção de incrementos (graças a Rahul Gopinath)
- Pequenas melhorias no registro (graças a Kyle Rogers, também conhecido como Stephan Penndorf)
- Correção para # 92 - suporte maven 2 quebrado
- Correção para #75 – testes ignorados incorretamente em classes com @Ignore e @BeforeClass/@AfterClass
0,32
- restaura a compatibilidade do java 7
- novo modificador de remoção de condicionais
- suporte para mutação de inicializadores estáticos com TestNG
- isolar corretamente os caminhos de classe ao executar via Ant
- quebra baseia-se no limite de cobertura
- permitir que JVM seja especificada
- apoiar estratégias de seleção de testes definidas pelo usuário
- suporta formato de saída definido pelo usuário
- suporte à priorização de testes definida pelo usuário
- correção para problema de bloqueio de uso com Robolectric
Observe que a configuração para projetos baseados em Ant muda nesta versão. Consulte configuração do ant para obter detalhes sobre o uso.
0,31
- Compatibilidade com Maven 2 restaurada
- Cálculo de cobertura de linha muito mais rápido
- Correção para # 78 - Erro quando o teste PowerMockito armazena simulações como membro
Esta versão também altera uma série de detalhes de implementação interna, alguns dos quais podem ser de interesse/importância para aqueles que mantêm ferramentas que se integram ao PIT.
As mutações agora têm escopo interno conforme descrito em https://groups.google.com/forum/#!topic/pitusers/E0-3QZuMYjE
Foi introduzida uma nova classe (org.pitest.mutationtest.tooling.EntryPoint) que remove algumas das duplicações que existiam nas várias formas de iniciar a análise de mutação.
0h30
- Suporte para testes Spock parametrizados
- Suporte para testes JUnitParams
- Correção para #73 – testes parametrizados JUnit chamando mutee durante a configuração falhando durante a fase de mutação
- Correção para # 63 - a tarefa ant falha quando opções vazias são fornecidas
- Capacidade de substituir opções do maven na linha de comando
- Capacidade de falhar em uma compilação se ela não atingir uma determinada pontuação de mutação
- Melhoria de desempenho quando os testes usam anotações @BeforeClass ou @AfterClass
- Agendamento ligeiramente melhorado em vários threads
- Suporte aprimorado a vários projetos maven
- Integração com controle de origem para usuários maven
0,29
- Análise incremental (--historyInputLocation e --historyOutputLocation)
- Detecção de código embutido ativada por padrão
- Registro mais silencioso por padrão
- Suporte aprimorado ao Java 7
- Atualização do ASM de 3.3 para 4
- Correção de problemas de simultaneidade durante a coleta de cobertura
- Correção para #53 – problemas com versões snapshot junit
- Correção para #59 – dependências duplicadas definidas via maven
0,28
- Detecção de bloco finalmente embutido (--detectInlinedCode)
- Novo modificador experimental de instrução switch (contribuição de Chris Rimmer)
- Não altere classes Groovy
- Correção para # 33 - defina user.dir para corresponder infalivelmente
- Correção para #43 - opcionalmente, suprimir pastas com carimbo de data/hora (--timestampedReports=true/false)
- Correção para #44 – exceção de modificação simultânea ao coletar cobertura
- Correção para #46 – configuração incorreta de sinalizadores pela tarefa ant
- Menor consumo de memória para o processo principal
- Coleta de cobertura mais rápida para grandes bases de código
- Varredura de classpath mais rápida para grandes bases de código
- Suporte para métodos do conjunto JUnit 3
- Correções para detecção incorreta de testes JUnit 3
Problema conhecido - A correção nº 33 pode não resolver o problema para usuários do maven 2.
A detecção de código Groovy ainda não foi testada com Groovy 2, que pode gerar códigos de bytes substancialmente diferentes das versões anteriores.
0,27
- Relatórios muito mais bonitos
- Agora evita a mutação de declarações assert
- Opção inScopeClasses removida - use targetClasses e targetTests em vez disso
- Correção para 100% de uso da CPU quando a JVM filha falha
- Correção para #35 #38 - modificador de variável de membro experimental agora corrige a pilha
- Correção para #39 – ordem dos elementos do caminho de classe agora mantida ao executar a partir do maven
Os usuários de atualização podem precisar modificar sua compilação devido à remoção do parâmetro inScopeClasses
0,26
- Suporte de formiga
- Novo modificador experimental para variáveis de membro
- Correção para #12 #27 - não trava mais quando o código em teste inicia threads não daemon
- Correção para #26 – agora avisa quando nenhuma biblioteca de teste encontrada no caminho de classe
- Correção para #30 - agora erros se classes mutadas não tiverem linha ou depuração de origem
- Correção para #32 – agora lida corretamente com as suposições JUnit
Problema conhecido - O novo modificador de variável de membro pode causar erros em erros sincronizados. No entanto, o modificador está desabilitado por padrão e os erros gerados são tratados corretamente pelo PIT.
0,25
- Suporte TestNG (experimental)
- Correção do problema em que mutações em classes aninhadas não são isoladas umas das outras
- Correção para isolamento de classpath quebrado para projetos usando xstream
- Manipulação aprimorada de testes parametrizados JUnit
- Capacidade de limitar mutações a raízes específicas do caminho de classe (--mutableCodePaths)
- Capacidade de adicionar raízes de classpath sem inicialização (--classPath) (experimental)
- Ler valores de configuração de XML (experimental)
- Opção para não gerar erro quando nenhuma mutação for encontrada
- Ordem consistente de classes no relatório HTML
- Estatísticas escritas no console
- As classes não são mais carregadas durante a verificação inicial do caminho de classe
- Nova sintaxe para ativar facilmente todas as operações de mutação
0,24
- Suporte JMockit
- Opção para gerar resultados em XML ou CSV
- Correção para #11
- Mutador INLINE_CONSTS aprimorado
0,23
- Correção para o problema 7 – arquivos de origem não localizados
0,22
- Atualização do Xstream para 1.4.1 para ativar o suporte OpenJDK 7
- Correção para nº 5 – corrupção de caracteres de nova linha em processos filhos
- Capacidade de definir argumentos de inicialização de processos filhos
0,21
- Melhorias significativas de desempenho
- Suporte para powermock via carregador de classe (requer anotação PowerMockIgnore) e agente java
- Relatórios de pequenos erros e melhorias de usabilidade
- Correção para defeito grave em torno da análise de dependência
- Dependências PIT não são mais colocadas no caminho de classe ao executar via maven
- Suporte para exclusão de determinadas classes ou testes
- Suporte para registro detalhado
0,20
- Limitar o número de mutações por classe
- Atualize o xstream para 1.3.1
- Disponibilizar no maven central
0,19
- Métodos enum integrados agora excluídos da mutação
- Corrigido bug relacionado ao relatório de classes não testadas
- Suporte para exclusão de provas superiores a uma certa distância da aula
- Suporte para exclusão de métodos da análise de mutação
- Melhorias de desempenho
- Removido o suporte para lançar relatórios de mutação do executor JUnit
0,18
- Primeiro lançamento público
Problemas
Consulte nossas regras de gerenciamento de problemas antes de criar ou trabalhar em problemas.
Créditos
Pitest é principalmente meu trabalho, mas se beneficiou das contribuições de muitos outros.
Contribuições notáveis não visíveis aqui, pois foram feitas antes da migração deste código para o github incluem
- Nicolas Rusconi - Tarefa Formiga
- Struan Kerr-Liddell - Melhorias no relatório HTML
- Stephan Pendorf – Múltiplas melhorias, incluindo mutadores aprimorados
Embora o PIT não incorpore nenhum código do projeto Jumble (http://jumble.sourceforge.net/), a base de código do Jumble foi usada como guia no desenvolvimento de alguns aspectos do PIT.