Позвольте мне предупредить, что мне могут нравиться тесты слишком много, нормальные люди обычно не слишком много с этим справляются.
Обычно я стараюсь избегать тестирования чего-либо, что будет напечатано в stdout в main. Будет проще проверить, был ли контент возвращен из функции перед печатью в stdout.
Иногда я действительно хочу, чтобы мое тестовое покрытие было основным, и в этом случае можно использовать тестовую функцию с префиксом «Пример», это плохое решение, но довольно простое в использовании.
main. go
package main
import "fmt"
func main(){
fmt.Println("Hello World")
}
main_test. go
package main
func ExampleMain(){
main()
// Output:
// Hello World
}
С вашим кодом «Пример» должно быть:
package main
func ExampleMain(){
main()
// Output:
// Number,Message,Name,Craft
// 6,success,Christina Koch,ISS
// 6,success,Alexander Skvortsov,ISS
// 6,success,Luca Parmitano,ISS
// 6,success,Andrew Morgan,ISS
// 6,success,Oleg Skripochka,ISS
// 6,success,Jessica Meir,ISS
}
Это простой способ тестирования, но его сложно обновить, поэтому мне не очень нравится.
Я бы предпочел что-то еще гибкий как это:
основной. go
package main
import "fmt"
func main() {
txt := helloWorld()
fmt.Println(txt)
}
func helloWorld() string {
return "Hello World"
}
main_test. go
package main
import "testing"
func Test_helloWorld(t *testing.T) {
tests := []struct {
name string
want string
}{
{
name: "A simple Test",
want: "Hello World",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := helloWorld(); got != tt.want {
t.Errorf("helloWorld() = %v, want %v", got, tt.want)
}
})
}
}
Это предпочтительно не запрашивать внешние услуги, когда это возможно, на ваших тестах, конечно, если вы считаете, что лучше запросить их в своем тесте любая причина, по которой вы знаете, это тоже нормально, но если вы чувствуете, что было бы лучше, если бы это было издевательской просьбой, и вы не знаете, как я был бы рад, чтобы предложить некоторые способы сделать это.