Geral
- Siga os mesmos padrões para todos os testes.
- Seja claro sobre o que é cada estado de teste.
- Seja específico sobre o comportamento esperado.
Exemplos
1) MethodName_StateUnderTest_ExpectedBehavior
Public void Sum_NegativeNumberAs1stParam_ExceptionThrown()
Public void Sum_NegativeNumberAs2ndParam_ExceptionThrown ()
Public void Sum_simpleValues_Calculated ()
Fonte: Nomeação de padrões para testes de unidade
2) Separando cada palavra por sublinhado
Public void Sum_Negative_Number_As_1st_Param_Exception_Thrown()
Public void Sum_Negative_Number_As_2nd_Param_Exception_Thrown ()
Public void Sum_Simple_Values_Calculated ()
De outros
- Terminar nomes de métodos com Teste
- Iniciar nomes de métodos com o nome da classe
unit-testing
naming-conventions
doeram
fonte
fonte
Respostas:
Estou praticamente com você neste homem. As convenções de nomenclatura que você usou são:
O que mais você precisa de um nome de teste?
Ao contrário da resposta de Ray, não acho que o prefixo Teste seja necessário. É um código de teste, nós sabemos disso. Se você precisar fazer isso para identificar o código, terá problemas maiores; o código de teste não deve ser misturado ao código de produção.
Quanto ao tamanho e uso do sublinhado, seu código de teste , quem se importa? Somente você e sua equipe verão isso, desde que seja legível e claro sobre o que o teste está fazendo, continue! :)
Dito isto, ainda sou bastante novo para testar e postar minhas aventuras no blog com ele :)
fonte
Test
e o nome da sua classe. Se o nome da classe e o nome da classe de teste forem iguais, sempre teremos que fazer uma pausa e ler o caminho de dois arquivosSearch Everywhere
(shift shift) ouFind a Class By Name
(CMD O). Entendo que ele será diferenciado pela estrutura de pastas ou módulo, mas quando procuramos por algo, já sabemos o que queremos pesquisar. Por exemplo, se eu estou olhando para um teste, eu quero limitar a pesquisatest
e, em seguida, procurar o nome, em vez de procurar o nome e , em seguida, filtrar teste manualmente pelos olhos. É uma pequena distinção, mas é muito mais fácil "testar [nome da classe]" e exibir apenas uma e reduzir a carga mentalTambém vale a pena ler: Estruturar testes de unidade
por exemplo
E aqui está o porquê:
Eu também gosto dessa abordagem:
MethodName_StateUnderTest_ExpectedBehavior
Então, talvez se ajuste a:
StateUnderTest_ExpectedBehavior
Porque cada teste já estará em uma classe aninhada
fonte
Costumo usar a convenção de
MethodName_DoesWhat_WhenTheseConditions
, por exemplo:No entanto, o que vejo muito é fazer com que o nome do teste siga a estrutura de teste da unidade de
Que também segue a sintaxe BDD / Gherkin de:
que seria nomear o teste da seguinte maneira:
UnderTheseTestConditions_WhenIDoThis_ThenIGetThis
Então, para o seu exemplo:
No entanto, prefiro colocar o nome do método que está sendo testado primeiro, porque os testes podem ser organizados em ordem alfabética ou exibidos em ordem alfabética na caixa suspensa do membro no VisStudio, e todos os testes para 1 método são agrupados.
De qualquer forma, gosto de separar as principais seções do nome do teste com sublinhados, em vez de todas as palavras , porque acho que facilita a leitura e a compreensão do ponto do teste.
Em outras palavras, eu gosto:
Sum_ThrowsException_WhenNegativeNumberAs1stParam
melhor queSum_Throws_Exception_When_Negative_Number_As_1st_Param
.fonte
Eu nomeio meus métodos de teste como outros métodos usando "PascalCasing" sem sublinhados ou separadores. Deixo o teste postfix para o método de fora, porque ele não agrega valor. O fato de o método ser um método de teste é indicado pelo atributo TestMethod .
Devido ao fato de que cada classe de teste deve testar apenas uma outra classe, deixo o nome da classe fora do nome do método. O nome da classe que contém os métodos de teste é nomeado como a classe em teste com o postfix "Tests".
Para métodos que testam exceções ou ações que não são possíveis, prefixo o método de teste com a palavra Não é possível .
Minha convenção de nomenclatura é baseada no artigo "Dicas para TDD: convenções e diretrizes de nomenclatura de teste" de Bryan Cook. Achei este artigo muito útil.
fonte
O primeiro conjunto de nomes é mais legível para mim, uma vez que o CamelCasing separa palavras e as barras inferiores separam partes do esquema de nomeação.
Eu também tendem a incluir "Test" em algum lugar, no nome da função ou no espaço para nome ou classe anexa.
fonte
Contanto que você siga uma única prática, isso realmente não importa. Geralmente, escrevo um único teste de unidade para um método que cubra todas as variações de um método (tenho métodos simples;) e depois escrevo conjuntos de testes mais complexos para os métodos que o exigem. Minha estrutura de nomenclatura é, portanto, geralmente testada (uma retração do JUnit 3).
fonte
Eu uso um prefixo 'T' para namespaces, classes e métodos de teste.
Tento ser limpo e criar pastas que replicam os espaços para nome, em seguida, crio uma pasta de testes ou um projeto separado para os testes e replico a estrutura de produção para os testes básicos:
Percebo facilmente que algo é um teste, sei exatamente a que código original ele se refere (se você não consegue resolver isso, o teste é complicado demais).
Parece com a convenção de nomenclatura de interfaces (quero dizer, você não se confunde com as coisas que começam com 'I', nem com 'T').
É fácil compilar apenas com ou sem os testes.
De qualquer forma, é bom em teoria e funciona muito bem para pequenos projetos.
fonte