TIL: Go에서 특정 테스트 실행
8075 단어 gotestingtodayilearned
다행스럽게도 Go 테스트 명령은 사용자가 실행할 테스트를 지정할 수 있는 추가 매개변수를 사용할 수 있습니다.
go test -v run <testname>
두 가지 기능이 있는 기본 모듈
twotests
이 있다고 가정해 보겠습니다. 그 중 하나는 시간이 많이 걸립니다.package twotests
import (
"fmt"
"time"
)
func doSomeOperation() uint8 {
fmt.Println("Doing operation...")
return 1
}
func doTimeConsumingOperation() uint8 {
fmt.Println("Doing time consuming operation...")
time.Sleep(10 * time.Second)
return 1
}
그리고 테스트 도구 모음:
package twotests
import "testing"
func TestDoSomeOperation(t *testing.T) {
got := doSomeOperation()
if got != 1 {
t.Errorf("Doing Operation not correct, needed %d", got)
}
}
func TestDoTimeConsumingOperation(t *testing.T) {
got := doTimeConsumingOperation()
if got != 1 {
t.Errorf("Doing time consuming Operation not correct, needed %d", got)
}
}
테스트를 실행할 수 있습니다.
go test -v
=== RUN TestDoSomeOperation
Doing some operation...
--- PASS: TestDoSomeOperation (0.00s)
=== RUN TestDoTimeConsumingOperation
Doing time consuming operation...
--- PASS: TestDoTimeConsumingOperation (10.00s)
PASS
ok example.com/jonasbn/twotests 10.681s
보시다시피 우리 테스트 스위트는 테스트 스위트의 긴 실행 시간으로 인해 도청되었습니다.
더 빠른 기능에서 무언가를 수정해야 하므로 수정하는 동안 수정하고 빠른 피드백을 받을 수 있어야 합니다. 피드백을 받기 위해 느린 테스트를 기다리고 싶지 않기 때문에 기능만 테스트할 수도 있습니다.
--run
를 사용하여 해당 테스트만 실행하도록 합시다.go test -v --run TestDoSomeOperation
=== RUN TestDoSomeOperation
Doing operation...
--- PASS: TestDoSomeOperation (0.00s)
PASS
ok example.com/jonasbn/twotests 0.110s
그리고 보시다시피
TestDoSomeOperation
가 실행되고 TestDoTimeConsumingOperation
가 건너뜁니다.모두 괜찮습니다.
피드백을 받으면서 코딩하는 동안 새로운 기능을 제안하고 이에 대한 테스트도 추가합니다.
func doAnotherOperation() uint8 {
fmt.Println("Doing another operation...")
return 1
}
func TestDoAnotherOperation(t *testing.T) {
got := doAnotherOperation()
if got != 1 {
t.Errorf("Doing Operation not correct, needed %d", got)
}
}
우리는 모든 테스트를 실행할 수 있고 회귀를 도입했는지 확인해야 하지만 작업이 계속됨에 따라 더 느린 기능과 테스트로 인해 속도가 느려지지 않아야 합니다.
운 좋게도 테스트 이름을 지정하는 정규식을 제공하여 필요한 테스트만 실행할 수 있습니다.
go test -v --run '(Some|Another)'
=== RUN TestDoSomeOperation
Doing some operation...
--- PASS: TestDoSomeOperation (0.00s)
=== RUN TestDoAnotherOperation
Doing another operation...
--- PASS: TestDoAnotherOperation (0.00s)
PASS
ok example.com/jonasbn/twotests 0.147s
보시다시피
TestDoSomeOperation
및 TestDoAnotherOperation
및 TestDoTimeConsumingOperation
만 실행합니다.이를 위해서는 테스트에 대한 몇 가지 좋은 명명 규칙이 필요하므로 코딩할 때 선택하고 선택할 수 있으므로 전반적으로 문제가 해결되고 빠른 피드백을 받을 수 있습니다.
또는 내장된 테스트 건너뛰기 기능을 사용할 수 있습니다.
그러나 개발할 때 손끝에 이 기능이 필요한 경우가 많으며 테스트 스위트의 실행을 제어하기 위해 코드에 변경 사항을 적용하고 싶지 않습니다.
내 권장 사항은 CI 테스트용 테스트 스위트에서 테스트를 건너뛰는 기능과 코딩할 때 테스트를 선택하는 기능을 사용하는 것입니다.
그러나 잠재적 회귀를 포착하기 위해 정기적으로 전체 테스트를 수행해야 합니다.
리소스 및 참조
이 게시물은 my TIL collection에서 해제되었습니다.
Reference
이 문제에 관하여(TIL: Go에서 특정 테스트 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jonasbn/til-running-specific-tests-in-go-n4k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)