os.exit 시나리오 테스트 커버리지 정보 (Coverals.io/goveralls) visting os.io/goveralls) visting in as.exit (coverals.io/&&&&&ch)이 질문은 OS.exit ()를 사용하는 동안 보도에 따라 OS.Exit ()를 테스트하는 문제를 해결합니다. 주요 관심사는 이진을 재배치하는 것과 같은 기존 방법이 적용 범위를 추적하지 못한다는 것입니다.
정확한 커버리지
수정 된 접근 방식이 수정 된 테스트 접근법이 제안된다는 것입니다. 바이너리를 재배치하는 대신 OS.exit () 또는 log.fatalf () 함수를 수정하여 종료 코드 또는 오류 로그를 캡처하기 위해 테스트를 수행합니다. 수입 (수입) "FMT" "OS" )) var Osexit = os.exit func crasher () { fmt.println ( "화염으로 내려 가라!") Osexit (1) }
package foo import ( "fmt" "os" ) var osExit = os.Exit func Crasher() { fmt.Println("Going down in flames!") osExit(1) }수정 된 테스트 코드 : foo/bar_test.go
패키지 foo "테스트"가져 오기 func testcrasher (t *testing.t) { // 현재 함수를 저장하고 마지막에 복원하십시오. Oldosexit : = Osexit func () {ossxit = oldosexit} () var는 int를 얻었습니다 myExit : = func (code int) { got = 코드 } OSEXIT = MyExit Crasher () exp : = 1; got! = exp { T.errorf ( "예상 출구 코드 : %d, got : %d", exp, got) } }
package foo import "testing" func TestCrasher(t *testing.T) { // Save current function and restore at the end: oldOsExit := osExit defer func() { osExit = oldOsExit }() var got int myExit := func(code int) { got = code } osExit = myExit Crasher() if exp := 1; got != exp { t.Errorf("Expected exit code: %d, got: %d", exp, got) } }
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3