Ao pesquisar as práticas recomendadas de teste de unidade para ajudar a elaborar diretrizes para minha organização, eu me deparei com a questão de saber se é melhor ou útil separar equipamentos de teste (classes de teste) ou manter todos os testes para uma única classe em um arquivo.
Fwiw, estou me referindo a "testes de unidade" no sentido puro de que são testes de caixa branca direcionados a uma única classe, uma asserção por teste, todas as dependências zombadas etc.
Um cenário de exemplo é uma classe (chamada Documento) que possui dois métodos: CheckIn e CheckOut. Cada método implementa várias regras, etc., que controlam seu comportamento. Seguindo a regra de uma asserção por teste, terei vários testes para cada método. Posso colocar todos os testes em uma única DocumentTests
classe com nomes como CheckInShouldThrowExceptionWhenUserIsUnauthorized
e CheckOutShouldThrowExceptionWhenUserIsUnauthorized
.
Ou, eu poderia ter duas classes de teste separadas: CheckInShould
e CheckOutShould
. Nesse caso, meus nomes de teste seriam reduzidos, mas eles seriam organizados para que todos os testes de um comportamento específico (método) estejam juntos.
Tenho certeza de que existem prós e contras em qualquer uma das abordagens e estou imaginando se alguém já seguiu o caminho com vários arquivos e, se sim, por quê? Ou, se você optou pela abordagem de arquivo único, por que acha que é melhor?
testResponseContainsSuccessTrue()
, testResponseContainsMyData()
e testResponseStatusCodeIsOk()
. Você poderia tê-los em um único testResponse()
que tem três afirma: assertEquals(200, response.status)
, assertEquals({"data": "mydata"}, response.data)
eassertEquals(true, response.success)