Como gerenciar testes não unitários em um projeto?

9

Eu tenho algum código no meu projeto que eu pessoalmente chamo de testsque não são testes de unidade. Eles devem ser executados e o resultado deve ser avaliado por um ser humano. Fiz isso porque estou criando um mecanismo de física e, durante o desenvolvimento, precisava ver o que estava fazendo. Então, eu fiz um simulationpacote no meu módulo de teste. Tecnicamente, são testes de unidade, porque as simulações estão usando a biblioteca de testes de unidade, mas não pretendo executá-las como meus testes de unidade reais.

O que eu gostaria de fazer é diferenciar esses testes especiais dos meus testes de unidade, porque eu quero executar todos os testes de unidade facilmente. Eu acho que é um pouco como testes funcionais. Você já encontrou um caso em que teve que preparar seu aplicativo para testes funcionais? Onde é que a preparação do teste funcional (basicamente, quais são minhas simulações) deve ser colocada no projeto e como distingui-los dos testes de unidade?

Estou em Java para poder alterar todas as assinaturas de meus métodos de @Test public void myNamedTest()para, public static void main(String[] args)mas seria trabalhoso e menos prático usar minhas simulações.

Estou usando junitem um gradleprojeto. Qualquer solução que crie uma pasta de teste especial gradleé bem-vinda.

Inverno
fonte
2
Acho que o que você está falando é uma plataforma de teste onde você pode executar testes ad hoc. Eles existem há tanto tempo quanto me lembro (mais de 30 anos) - possivelmente até antes disso. Eles geralmente ficam em um projeto separado que pode acessar a biblioteca ou qualquer outra coisa, mas você pode estruturá-la como quiser.
Robbie Dee
3
Os termos unidade / integração / testes funcionais descrevem o escopo do teste: o que está sendo testado. Isso é completamente independente de como esses testes são executados, por exemplo, testes manuais vs. testes automatizados. Pode haver testes de aceitação automatizados, testes de unidade manuais e qualquer outro meio. Portanto, se você usa o JUnit para executar testes funcionais manuais, tudo bem - mantenha-os separados dos testes automáticos para que não sejam executados por padrão.
amon

Respostas:

10

Parece que as versões posteriores do Junit suportam categorias de testes. Isso pode ser útil para classificar cada teste. Então, quando a automação de construção é executada, ela pode incluir ou excluir esses testes com base na categoria.

Se você deseja misturar esses testes com os testes de unidade, é uma questão de preferência da organização. Pode-se criar um projeto separado de "plataforma de teste" para separar os testes de unidade regulares versus os mais especializados.

https://dzone.com/articles/closer-look-junit-categories

Jon Raynor
fonte