"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > `os.exit ()``````를 정확하게 테스트하고 코드 커버리지를 유지하려면 어떻게해야합니까?

`os.exit ()``````를 정확하게 테스트하고 코드 커버리지를 유지하려면 어떻게해야합니까?

2025-03-13에 게시되었습니다
검색:107

How Can I Accurately Test `os.Exit()` in Go and Maintain Code Coverage?

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