Usando o Google Test 1.6 (Windows 7, Visual Studio C ++). Como posso desligar um determinado teste? (também conhecido como como posso impedir a execução de um teste). Há algo que eu possa fazer além de comentar todo o teste?
googletest
Do utilizador
fonte
fonte
Você também pode executar um subconjunto de testes , de acordo com a documentação:
Executando um Subconjunto de Testes
Não é a solução mais bonita, mas funciona.
fonte
Agora você pode usar a
GTEST_SKIP()
macro para pular condicionalmente um teste em tempo de execução. Por exemplo:Observe que este é um recurso muito recente, portanto, pode ser necessário atualizar sua biblioteca do GoogleTest para usá-lo.
fonte
GTEST_SKIP()
está disponível a partir de 1.10.0.GTEST_SKIP_("some message")
(observe o sublinhado à direita)Esta é a expressão para incluir testes cujos nomes tenham as strings foo1 ou foo2 e excluir os testes cujos nomes tenham as strings bar1 ou bar2:
fonte
Eu prefiro fazer em código:
Posso comentar ambas as linhas para executar todos os testes, descomentar a primeira linha para testar um único recurso que estou investigando / trabalhando ou descomentar a segunda linha se um teste não funcionar, mas quero testar todo o resto.
Você também pode testar / excluir um conjunto de recursos usando curingas e escrevendo uma lista, "MyLibrary.TestNetwork *" ou "-MyLibrary.TestFileSystem *".
fonte
export GTEST_FILTER='*'
.*
" não "". Em vez disso, vou apenas usar outra variável de ambiente que substitui o filtro.Se mais de um teste for necessário, será ignorado
fonte
Para outra abordagem, você pode agrupar seus testes em uma função e usar verificações condicionais normais em tempo de execução para executá-los apenas se desejar.
Isso é útil para mim, pois estou tentando executar alguns testes apenas quando um sistema oferece suporte a IPv6 de pilha dupla.
Tecnicamente, esse material de pilha dupla não deve ser um teste de unidade, pois depende do sistema. Mas eu não posso realmente fazer nenhum teste de integração até que eu teste se eles funcionam de qualquer maneira e isso garante que ele não relatará falhas quando não for a falha dos códigos.
Quanto ao teste, tenho objetos stub que simulam o suporte de um sistema para dualstack (ou falta de) por meio da construção de soquetes falsos.
A única desvantagem é que a saída do teste e o número de testes mudarão, o que pode causar problemas com algo que monitora o número de testes bem-sucedidos.
Você também pode usar ASSERT_ * em vez de EQUAL_ *. Afirme a vontade sobre o resto do teste se ele falhar. Impede que muitas coisas redundantes sejam despejadas no console.
fonte
Eu tinha a mesma necessidade de testes condicionais e descobri uma boa solução alternativa. Eu defini uma macro TEST_C que funciona como uma macro TEST_F, mas ela possui um terceiro parâmetro, que é uma expressão booleana, avaliada em runtime em main.cpp ANTES dos testes serem iniciados. Os testes que avaliam falso não são executados. A macro é feia, mas parece:
Além disso, em seu main.cpp, você precisa desse loop para excluir os testes que avaliam falso:
fonte