Como escrever um teste de unidade em Golang?

Como Escrever Um Teste De Unidade Em Golang



Se você é um desenvolvedor Go, sabe como os testes são importantes para garantir a qualidade do seu código. Escrita testes unitários é uma parte essencial do processo de desenvolvimento e pode ajudá-lo a detectar erros no início, economizando tempo e dinheiro a longo prazo. Neste artigo, vamos discutir como escrever testes unitários em Golang.

O que é Teste de Unidade?

O primeiro passo é compreender o que teste de unidade significa. Teste de unidade refere-se ao processo de testar pequenas unidades ou módulos de código para garantir que cada um deles funcione conforme o esperado. Teste de unidade é usado para remover problemas do código, melhorar a estabilidade do código e garantir a correção ao atualizar o código. A fase inicial do teste de software é a teste de unidade , que é seguido pelo teste de interface do usuário e pelo teste de integração.

O pacote de teste

em Golang, teste de unidade é executado usando um pacote chamado testando . O pacote fornece várias funções que nos permitem testar nosso código. O código Go pode ser testado automaticamente com a ajuda do pacote testing.







Exemplo de programa para testar

Precisamos de algum código para nossos testes analisar antes que possamos escrever qualquer testes unitários . Vamos criar um pequeno programa que soma dois números.



pacote principal

importar (
'fmt'
)
funcAdicionar ( a int , b int ) int {
retornar a + b
}

função principal ( ) {
fmt. Println ( Adicionar ( 2 , 3 ) )
}

O código acima define o Adicionar() função, que adiciona dois números, a e b , como entradas e saídas do resultado como um número inteiro. Somar os números 2 e 3 é tudo o que a função principal faz antes de imprimir o resultado.







Convenção para escrever testes de unidade em movimento

Todo projeto Go deve ter um arquivo de teste separado que contenha todos os testes desse projeto. O arquivo deve ter o mesmo nome do arquivo que está sendo testado e deve ter _test.go adicionado ao final do nome do arquivo. Por exemplo, se quisermos testar um arquivo chamado calculadora.go , devemos nomear nosso arquivo de teste calculadora_teste.go .

É uma prática padrão para Vá testando arquivos estejam localizados no mesmo pacote ou diretório que o código que estão avaliando. Quando você usa o comando go build, o compilador não cria esses arquivos, portanto, você não precisa se preocupar com a exibição deles nas implantações.



Para escrever um teste de unidade em Go, precisamos usar o testando pacote. Podemos iniciar cada função de teste com a palavra Teste e, em seguida, adicione uma descrição do que queremos testar. Por exemplo, TestAddition ou TestSubtração . Podemos então escrever o código de teste que verifica se a função que estamos testando retorna os resultados esperados.

Em Go, cada função de teste deve começar com a instrução t := testando.T{}. Esta declaração cria um novo testando objeto que podemos usar para verificar se o teste passou ou falhou. Podemos então usar o t.Errorf() função para imprimir uma mensagem de erro se o teste falhar.

Como escrever o código de teste?

Quando se trata de escrever testes de unidade em Go, é importante começar especificando o pacote que você deseja testar. Depois de importar o pacote de teste, você pode acessar vários tipos e métodos que o pacote exporta, incluindo o testando.T tipo. A própria lógica de teste é então escrita em uma função que começa com a palavra-chave 'Teste' seguido por um nome descritivo, como TestAdd() . Nessa função, você pode incluir o código do teste e quaisquer asserções necessárias para verificar o comportamento esperado.

Resumindo, as características de um teste em Go são as seguintes:

  • O único e único parâmetro obrigatório é t *teste.T
  • A função de teste começa com a palavra Teste e é seguida por uma palavra ou frase que começa com letra maiúscula.
  • Para indicar uma falha, a função de teste deve chamar t.Errorf ou t.Falha, e para fornecer informações de depuração adicionais sem causar uma falha, o t.Log pode ser usado.
  • Para fornecer informações de depuração sem falhas, use t.Log.
  • Os testes são armazenados em arquivos com o nome foo_test.go , por exemplo, math_test.go .

Feche o arquivo após salvá-lo.

pacote principal

importar (
'testando'
)

funcTestAdd ( t * teste. T ) {
resultado := Adicionar ( 2 , 3 )
se resultado != 5 {
t. Errof ( 'Adicionar(2, 3) = %d; deseja 5' , resultado )
}
}

O Adicionar() função é testada pelo TestAdd() função, que é definida neste teste. Ele usa os números 2 e 3 para chamar Add e, em seguida, confirma que o resultado é 5. Uma mensagem de erro é impressa se o resultado for menor que 5 quando t.Errorf() é invocado.

Por fim, é importante saber que o Go possui uma ferramenta de teste integrada chamada vá testar. Esta ferramenta executa todos os testes do projeto e fornece um relatório dos resultados. vai testar deve ser digitado no terminal enquanto estiver no diretório do projeto para iniciar os testes. Todos os testes nesse diretório serão executados como resultado.

< forte > vá testar < teste - arquivo - nome > _teste. ir forte >

Resultados do Teste de Unidade

A saída mostrará as funções de teste que passaram, falharam ou pularam.

APROVADO ou OK denota que o código está operando como pretendido. Você receberá FALHAR se um teste falhar.

O _test.go suffix é o único que o subcomando go test verifica nos arquivos. Depois disso, vá ao teste pesquisa esses arquivos para quaisquer funções especiais, como func TestXxx e vários outros. Go test compila e chama essas funções corretamente, executa-as, reúne e relata os resultados e, finalmente, limpa tudo em um pacote principal temporário.

A última etapa é integrar seus testes ao seu fluxo de trabalho de desenvolvimento. A melhor prática é executar seus testes sempre que você enviar seu código para um repositório. A integração de seus testes em seu fluxo de trabalho de desenvolvimento garante que seu código seja testado continuamente e quaisquer problemas sejam resolvidos antes da implantação.

Conclusão

Escrita testes unitários é um componente crucial do desenvolvimento de software porque garante que seu código seja escalável, funcional e eficaz. A biblioteca de testes Go é fácil e direta de usar. Você deve ser capaz de criar Golang testes unitários da mais alta qualidade, seguindo os procedimentos listados acima. Lembre-se de integrar seus testes ao seu fluxo de trabalho de desenvolvimento para garantir que seu código seja testado continuamente e que quaisquer problemas sejam resolvidos antes da implantação.