@ Ainar-G의 탁월한 답변에 대한 내 의견에 대해 자세히 설명하기 위해 지난 1 년 동안 나는 두 세계의 장점을 모두 달성하기 위해 명명 규칙 -short
과 의 조합을 사용해 왔습니다 Integration
.
단위 및 통합은 동일한 파일에서 조화를 테스트합니다.
빌드 플래그는 이전에 여러 파일 (이 저를 강요 services_test.go
, services_integration_test.go
등).
대신 처음 두 개가 단위 테스트이고 마지막에 통합 테스트가있는 아래의 예를 사용하세요.
package services
import "testing"
func TestServiceFunc(t *testing.T) {
t.Parallel()
...
}
func TestInvalidServiceFunc3(t *testing.T) {
t.Parallel()
...
}
func TestPostgresVersionIntegration(t *testing.T) {
if testing.Short() {
t.Skip("skipping integration test")
}
...
}
마지막 테스트에는 다음과 같은 규칙이 있습니다.
- 사용
Integration
테스트 이름.
-short
플래그 지시문에서 실행 중인지 확인합니다 .
기본적으로 사양은 다음과 같습니다. "모든 테스트를 정상적으로 작성하십시오. 장기간 실행되는 테스트이거나 통합 테스트 인 경우이 명명 규칙을 따르고 -short
동료에게 좋은지 확인하십시오 ."
단위 테스트 만 실행 :
go test -v -short
이것은 다음과 같은 멋진 메시지 세트를 제공합니다.
=== RUN TestPostgresVersionIntegration
--- SKIP: TestPostgresVersionIntegration (0.00s)
service_test.go:138: skipping integration test
통합 테스트 만 실행 :
go test -run Integration
통합 테스트 만 실행합니다. 프로덕션에서 연기 테스트 카나리아에 유용합니다.
분명히이 접근 방식의 단점 go test
은 -short
플래그 없이 누구나를 실행 하면 기본적으로 모든 테스트 (단위 및 통합 테스트)를 실행한다는 것입니다.
실제로 프로젝트가 단위 및 통합 테스트를 수행 할 수있을만큼 충분히 크면 Makefile
간단한 지시문을 사용할 수 있는 곳을 사용하고있을 가능성이 큽니다 go test -short
. 또는 README.md
파일에 넣고 오늘이라고 부르세요.