Gostaria de ver os resultados dos testes (system.out / err, mensagens de log dos componentes que estão sendo testados) enquanto eles são executados no mesmo console que eu executo:
gradle test
E não espere até que os testes sejam concluídos para examinar os relatórios de teste (que são gerados somente quando os testes são concluídos, portanto, não posso "f-tail" de nada enquanto os testes estão em execução)
test
fechamento.-i
lançará um monte de informações irrelevantes no terminal.grep
para filtrar milhares de linhas indesejadas. Veja stackoverflow.com/questions/3963708/…Aqui está a minha versão chique:
fonte
|
dostartItem
porque a execução da tarefa via Android Studio 2.2.3 os reconhece como erros nas mensagens e era irritante nas compilações de sucesso.Você pode adicionar um fechamento Groovy dentro do arquivo build.gradle que faz o log para você:
No seu console, ele fica assim:
Desde a versão 1.1 Gradle suporta muito mais opções para registrar a saída do teste . Com essas opções em mãos, você pode obter uma saída semelhante com a seguinte configuração:
fonte
Como stefanglase respondeu:
adicionar o código a seguir ao
build.gradle
(desde a versão 1.1) funciona bem para saída em testes aprovados , ignorados e com falha .O que quero dizer adicionalmente (descobri que isso é um problema para iniciantes) é que o
gradle test
comando executa o teste apenas uma vez por alteração .Então, se você estiver executando o segunda vez, não haverá saída nos resultados do teste . Você também pode ver isso na saída do edifício: gradle diz UP-TO-DATE nos testes. Portanto, não é executado pela n-ésima vez.
Gradle inteligente!
Se você deseja forçar a execução dos casos de teste, use
gradle cleanTest test
.Este tópico está um pouco fora do tópico, mas espero que ajude alguns novatos.
editar
Como sparc_spread afirmou nos comentários:
Se você deseja forçar o gradle a executar sempre novos testes (o que nem sempre é uma boa idéia), você pode adicionar
outputs.upToDateWhen {false}
atestLogging { [...] }
. Continue lendo aqui .Paz.
fonte
gradle cleanTest test
cada vez (a partir do Gradle 1.12). Adicionaroutputs.upToDateWhen {false}
paratestLogging {...}
e que deve fazer o truque. Isso forçará o Gradle a executar os testes todas as vezes. Encontrei isso nos fóruns de Gradle, postados pelo próprio Dockter . Espero que isto ajude.exceptionFormat "full"
para obter detalhes sobre o que falhou, útil quando você estiver usando o AssertJ ou uma biblioteca semelhante.cleanTest
você pode usartest --rerun-tasks
--rerun-tasks
que todas as suas tarefas serão executadas novamente, não apenas as tarefas dos testes.cleanTest test
no Android Studio e no gradle 3.3 mais recentes não está funcionando do meu lado, mas--rerun-tasks
fez o truque. Não sei porque. Mas ler esta resposta realmente resolveu minha dor de cabeça, onde está o registro do teste do f ** king depois que eu adiciono tudo.Isenção de responsabilidade: Eu sou o desenvolvedor do Gradle Test Logger Plugin.
Você pode simplesmente usar o Gradle Test Logger Plugin para imprimir belos logs no console. O plug-in usa padrões sensatos para satisfazer a maioria dos usuários com pouca ou nenhuma configuração, mas também oferece vários temas e opções de configuração para todos os gostos.
Exemplos
Tema padrão
Tema Mocha
Uso
Certifique-se de sempre obter a versão mais recente do Gradle Central .
Configuração
Você não precisa de nenhuma configuração. No entanto, o plugin oferece algumas opções. Isso pode ser feito da seguinte maneira (valores padrão mostrados):
Espero que você goste de usá-lo.
fonte
slowThreshold
como0
.Adicione isto para
build.gradle
impedir que o gradle engula stdout e stderr.Está documentado aqui .
fonte
A tarefa 'test' não funciona para o plug-in Android; para o plug-in Android, use o seguinte:
Veja o seguinte: https://stackoverflow.com/a/31665341/3521637
fonte
Como acompanhamento da grande resposta de Shubham, eu gostaria de sugerir o uso de valores enum em vez de strings . Por favor, dê uma olhada na documentação da classe TestLogging .
fonte
Minha versão minimalista favorita baseada na resposta Shubham Chaudhary.
Coloque isso no
build.gradle
arquivo:fonte
Em Gradle usando o plug-in Android:
Então a saída será:
fonte
A mescla da grande resposta de Shubham e o JJD usam enum em vez de string
fonte
Seguindo a resposta de Benjamin Muschko (19 de março de 2011), você pode usar a
-i
bandeira junto com o grep , para filtrar milhares de linhas indesejadas. Exemplos:Filtro forte - Exiba apenas o nome e o resultado de cada teste de unidade e o status geral da compilação. Erros ou exceções de instalação não são exibidos.
Filtro suave - Exiba o nome e o resultado de cada teste de unidade, bem como os erros / exceções de configuração. Mas também incluirá algumas informações irrelevantes:
Filtro suave, sintaxe alternativa: (os tokens de pesquisa são divididos em sequências individuais)
Explicação de como funciona: A saída do primeiro comando
./gradlew test -i
,, é canalizada para um segundo comandogrep
, que filtrará muitas linhas indesejadas com base em uma expressão regular."-E"
ativa o modo de expressão regular e"|"
significa "ou". É permitido exibir um nome e um resultado do teste de unidade usando" > "
, e o status geral é permitido com"BUILD"
. No filtro flexível, o"-v"
sinalizador significa "não contém" e"^"
significa "início da linha". Portanto, remove todas as linhas que começam com "Executando" ou com "Criando" etc.Exemplo para testes de unidade de instrumentação Android, com gradle 5.1:
Exemplo de cobertura de teste de unidade Jacoco, com gradle 4.10:
fonte
Se você possui um DSL
build.gradle.kts
escrito no Kotlin, pode imprimir os resultados dos testes (eu estava desenvolvendo um projeto de plataforma múltipla do kotlin, sem o plugin "java" aplicado):fonte
Basta adicionar o seguinte fechamento ao seu build.gradle. a saída será impressa após a execução de cada teste.
fonte