"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como você pode testar funções não exportadas no Go?

Como você pode testar funções não exportadas no Go?

Publicado em 2024-11-06
Navegar:949

How Can You Test Unexported Functions in Go?

Chamando funções de teste a partir de arquivos Go que não são de teste

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 .

Teste de caixa preta e branca

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.

Exemplo

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.

Tutorial mais recente Mais>

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