Comment tester les fonctions principales du paquet dans golang?

Je veux tester quelques fonctions qui sont inclus dans mon paquet principal, mais mes essais ne semblent pas être en mesure d'accéder à ces fonctions.

Mon échantillon principal.allez fichier ressemble à ceci:

package main

import (
    "log"
)

func main() {
    log.Printf(foo())
}

func foo() string {
    return "Foo"
}

et mon main_test.allez fichier ressemble à ceci:

package main

import (
    "testing"
)

func Foo(t testing.T) {
    t.Error(foo())
}

quand je lance go test main_test.go - je obtenir

# command-line-arguments
.\main_test.go:8: undefined: foo
FAIL    command-line-arguments [build failed]

Que je comprends, même si j'ai déplacé le fichier de test ailleurs et a essayé de l'importation à partir de la principale.allez file, je ne pouvais pas l'importer, puisque c'est package main.

Quelle est la bonne façon de structurer de tels tests? Dois-je enlever tout simplement de la main paquet de réserves une simple fonction principale de tout et puis de tester les fonctions dans leur propre paquet, ou est-il un moyen pour moi d'appeler ces fonctions à partir du fichier principal pendant les tests?

source d'informationauteur ThePiachu