내장 testing
패키지로 인해 GO에서 단위 테스트를 작성하는 것이 간단합니다. 다음은 단위 테스트 작성에 대한 단계별 접근 방식입니다.
foo.go
라는 소스 파일의 경우 동일한 패키지에서 foo_test.go
라는 테스트 파일을 만듭니다. 테스트 기능 작성 : foo_test.go
내부에서 Test
로 시작하는 기능을 작성하고 테스트중인 기능의 이름을 작성하십시오. 이 기능은 *testing.T
인수를 취합니다. 예를 들어:
<code class="go">func TestFoo(t *testing.T) { // Test code here }</code>
어설 션 : t.Error
또는 t.Errorf
사용하여 오류를 기록하고 테스트에 실패합니다. t.Fatal
또는 t.Fatalf
사용하여 중요한 것이 실패하면 즉시 테스트를 중지 할 수 있습니다.
<code class="go">if result != expected { t.Errorf("expected %v, but got %v", expected, result) }</code>
go test
명령을 사용하여 테스트를 실행합니다.go test -cover
실행하십시오.테이블 중심 테스트 : 테이블 중심 접근 방식을 사용하여 코드 복제를 줄이고 여러 시나리오를 효율적으로 테스트합니다.
<code class="go">func TestFoo(t *testing.T) { tests := []struct { input int expected int }{ {1, 2}, {2, 4}, {-1, -2}, } for _, tt := range tests { result := foo(tt.input) if result != tt.expected { t.Errorf("foo(%d) = %d, want %d", tt.input, result, tt.expected) } } }</code>
GO에서 단위 테스트를 작성하는 모범 사례를 준수하면 테스트의 품질과 유지 관리가 크게 향상 될 수 있습니다. 몇 가지 주요 관행은 다음과 같습니다.
TestFooReturnsDoubleOfInput
TestFoo
보다 더 설명 적입니다. 병렬 테스트 : t.Parallel()
사용하여 테스트를 병렬로 실행하여 테스트 스위트, 특히 대규모 프로젝트의 속도를 크게 높일 수 있습니다.
<code class="go">func TestFoo(t *testing.T) { t.Parallel() // Test code here }</code>
GO를 조롱하면 종속성을 제어 된 가짜 물체로 대체하여 테스트중인 장치를 분리하는 데 도움이 될 수 있습니다. 모킹을 활용하여 장치 테스트를 향상시키는 방법은 다음과 같습니다.
조롱 라이브러리 선택 : 인기있는 GO 조롱 라이브러리에는 GoMock
, testify/mock
및 gomock
포함됩니다. 예를 들어, testify/mock
:
<code class="go">import ( "testing" "github.com/stretchr/testify/mock" ) type MockDependency struct { mock.Mock } func (m *MockDependency) SomeMethod(input string) string { args := m.Called(input) return args.String(0) }</code>
설정 기대치 : 테스트중인 기능을 실행하기 전에 라이브러리의 API를 사용하여 모의의 예상 동작을 설정하십시오.
<code class="go">mockDependency := new(MockDependency) mockDependency.On("SomeMethod", "input").Return("output")</code>
모의 통화를 주장 : 테스트 후 모의가 예상대로 호출되었는지 확인하십시오.
<code class="go">mockDependency.AssertCalled(t, "SomeMethod", "input")</code>
몇 가지 도구를 사용하면 단위 테스트를 효율적으로 관리하고 실행하는 데 도움이 될 수 있습니다. 다음은 인기있는 것들의 목록입니다.
go test
명령은 다재다능하며 다양한 플래그와 함께 사용하여 테스트 실행을 사용자 정의 할 수 있습니다. 예를 들어, 장점 출력에 대한 go test -v
또는 go test -coverprofile=coverage.out
.Gomega
와 함께 사용할 수 있습니다.require
, 유창한 어설 션 assert
, 테스트 조직을위한 suite
및 mock
종속성을 포함하는 인기있는 테스트 관련 패키지 제품군.이러한 도구를 조합하여 테스트 프로세스를 간소화하고 테스트 범위를 개선하며 테스트 스위트가보다 유지 관리 가능하고 효율적으로 만들 수 있습니다.
위 내용은 GO에서 단위 테스트를 어떻게 작성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!