Wie kann ich die unit-test-Kommandozeilen-flags in Gehen?

Möchte ich einen unit test, der überprüft, ein bestimmtes command line flag ist innerhalb einer Aufzählung.

Hier ist der code, den ich gerne zum schreiben von tests vor:

var formatType string

const (
    text = "text"
    json = "json"
    hash = "hash"
)

func init() {
    const (
        defaultFormat = "text"
        formatUsage   = "desired output format"
    )

    flag.StringVar(&formatType, "format", defaultFormat, formatUsage)
    flag.StringVar(&formatType, "f", defaultFormat, formatUsage+" (shorthand)")

}

func main() {
    flag.Parse()
}

Den gewünschten test bestehen würde, nur, wenn-format erreicht eine der const-Werte oben angegeben. Dieser Wert verfügbar sein würden formatType. Ein Beispiel richtige Aufruf wäre: Programm -format text

Was ist der beste Weg, um zu testen, das gewünschte Verhalten?

Hinweis: Vielleicht habe ich diese schlecht formuliert, aber der angezeigte code nicht dem unit test an sich, aber den code möchte ich schreiben unit-tests vor. Dies ist ein einfaches Beispiel aus dem tool, das ich Schreibe, und wollte Fragen, ob es eine gute Möglichkeit zu testen, gültige Eingaben für das Werkzeug.

  • IMHO ist dies nicht ein Gerät zu testen: Dieses ist gerade einige einfache code läuft nach dem Parsen der Kommandozeilen-flags. "Unit-tests" im Gehen geschrieben, mit dem Test-Paket finden Sie unter golang.org/doc/code.html#Testing, aber diese tests nicht ausführen, bei Start der Anwendung. Wie wäre es mit einem einfachen if formatType!=text && .. && foramtType!="hash" { log.Fatalf("You learn read man page...") } ?
  • Was gezeigt wird, ist nicht die unit Tests selbst, aber den code möchte ich ausführen von unit-tests vor.
  • Beide Antworten zeigen Ihnen einen Weg, um test für die Prüfung der gesetzten flags. Was ist dein problem?
  • Keine. Der erste Kommentar, als ich es gelesen habe, sagt, dass der code oben ist nicht eine Einheit testen. Was wahr ist, ist es nicht, und das wollte ich klären.
  • Diese Frage zeigt, hoch in der Google-Ergebnisse. Ich war auf der Suche nach Lösung zum gleichen Problem. @VonC hat eine einfache Lösung für unit-Test-command-line arguments: [stackoverflow.com/a/26024595/197633]
InformationsquelleAutor KevDog | 2013-07-01
Schreibe einen Kommentar