Les tutoriels de test Go que j'ai consultés utilisent la valeur de retour pour le test.
J'aimerais écrire un test qui vérifie la sortie du terminal.
Voici un exemple de ce que je souhaite réaliser :
main.go
package main
import (
"fmt"
"os"
"strings"
)
func main() {
arguments := os.Args
fmt.Println(strings.ToUpper(arguments[1]))
}
Le test avec lequel j'ai joué
main_test.go
package main
import (
"log"
"os/exec"
"testing"
)
type checkResult struct {
inp string
expected string
}
var testCases = []checkResult{
{"Go <3", "GO <3"},
}
func TestMain(t *testing.T) {
for _, test := range testCases {
output, err := exec.Command("go run main.go ", test.inp).Output()
if err != nil {
log.Fatal(err)
}
if string(output) != (test.expected) {
t.Fatal("Expected result is wrong")
}
}
}