No Go, as funções de teste não devem ser chamadas de dentro do próprio código. Em vez disso, os testes de unidade devem ser executados usando o comando go test
Go suporta dois tipos de teste de unidade: caixa preta e caixa branca .
Teste de caixa preta testa funções exportadas de fora do pacote, simulando como os pacotes externos irão interagir com ele.
Teste de caixa branca testa funções não exportadas de dentro do próprio pacote.
Considere um pacote chamado exemplo com uma soma de função exportada e uma função utilitária não exportada add.
// example.go
package example
func Sum(nums ...int) int {
sum := 0
for _, num := range nums {
sum = add(sum, num)
}
return sum
}
func add(a, b int) int {
return a b
}
Teste de caixa preta (em example_test.go):
package example_test
import (
"testing"
"example"
)
func TestSum(t *testing.T) {
tests := []struct {
nums []int
sum int
}{
{nums: []int{1, 2, 3}, sum: 6},
{nums: []int{2, 3, 4}, sum: 9},
}
for _, test := range tests {
s := example.Sum(test.nums...)
if s != test.sum {
t.FailNow()
}
}
}
Teste de caixa branca (em example_internal_test.go):
package example
import "testing"
func TestAdd(t *testing.T) {
tests := []struct {
a int
b int
sum int
}{
{a: 1, b: 2, sum: 3},
{a: 3, b: 4, sum: 7},
}
for _, test := range tests {
s := add(test.a, test.b)
if s != test.sum {
t.FailNow()
}
}
}
Em resumo, os testes de unidade devem ser executados usando o comando go test e nunca chamados diretamente do código. Os testes de caixa preta e branca fornecem diferentes níveis de acesso à implementação do pacote para fins de teste.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3