Go의 명령줄 플래그 단위 테스트
Go에서 명령줄 애플리케이션에 대한 사용자 정의 플래그를 정의하려면 철저한 테스트 프로세스가 필요합니다. 단정. 특정 시나리오 중 하나는 특정 플래그의 값이 미리 정의된 열거형에 속하는지 확인하는 것입니다.
테스트할 코드
<code class="go">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() }</code>
테스트 방법
원하는 동작을 단위 테스트하기 위해 플래그에 대한 사용자 정의 유형과 유효성 검사 규칙을 정의할 수 있는 flag.Var 함수의 기능을 활용할 수 있습니다.
<code class="go">type formatType string func (f *formatType) String() string { return fmt.Sprint(*f) } func (f *formatType) Set(value string) error { if len(*f) > 0 && *f != "text" { return errors.New("format flag already set") } if value != "text" && value != "json" && value != "hash" { return errors.New("Invalid Format Type") } *f = formatType(value) return nil }</code>
이 사용자 정의 유형 구현에서 :
이 사용자 정의 formatType 플래그를 사용하면 이제 테스트 프로세스에서 다양한 값으로 설정된 경우 플래그의 동작을 확인할 수 있습니다.
예제 테스트
<code class="go">package main import "testing" func TestFormatType(t *testing.T) { tests := []struct { args []string expect string }{ {[]string{"-format", "text"}, "text"}, {[]string{"-f", "json"}, "json"}, {[]string{"-format", "foo"}, "Invalid Format Type"}, } for _, test := range tests { t.Run(test.args[0], func(t *testing.T) { flag.Parse() if typeFlag != test.expect { t.Errorf("Expected %s got %s", test.expect, typeFlag) } }) } }</code>
이 예에서:
위 내용은 Go에서 단위 테스트 명령줄 플래그 열거 유효성 검사를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!