> 백엔드 개발 > Golang > Go에서 `os.Exit()`를 정확하게 테스트하고 코드 적용 범위를 유지하려면 어떻게 해야 합니까?

Go에서 `os.Exit()`를 정확하게 테스트하고 코드 적용 범위를 유지하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2024-12-25 10:19:09
원래의
205명이 탐색했습니다.

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

커버리지 정보를 사용하여 Go에서 os.Exit 시나리오 테스트(Coveralls.io/Goveralls)

이 질문은 다음과 같은 테스트 루틴의 과제를 다룹니다. 커버리지 정보가 정확하게 보고되는지 확인하면서 Go에서 os.Exit()를 활용하세요. 주요 관심사는 바이너리 다시 호출과 같은 기존 방법이 적용 범위를 추적하지 못한다는 것입니다.

정확한 적용 범위를 위해 수정된 접근 방식

이 제한 사항을 해결하기 위해 수정된 테스트 접근 방식이 제안됩니다. 바이너리를 다시 호출하는 대신 os.Exit() 또는 log.Fatalf() 함수를 수정하여 종료 코드나 오류 로그를 캡처하여 테스트를 수행합니다.

수정된 foo/bar.go:

package foo

import (
    "fmt"
    "os"
)

var osExit = os.Exit

func Crasher() {
    fmt.Println("Going down in flames!")
    osExit(1)
}
로그인 후 복사

수정된 테스트 코드: foo/bar_test.go

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)
    }
}
로그인 후 복사

이 접근 방식을 사용하면 적용 범위 도구가 os.Exit()의 실행을 정확하게 추적할 수 있으며 os.Exit()로 종료되는 루틴이 종료되는 테스트 사례가 포함되도록 보장합니다.

결론

수정된 접근 방식은 테스트를 효과적으로 결합합니다. 종료 코드 및 적용 범위 정보를 통해 정확한 적용 범위 보고를 유지하면서 os.Exit() 시나리오를 정확하게 테스트하기 위한 완벽한 솔루션을 제공합니다.

위 내용은 Go에서 `os.Exit()`를 정확하게 테스트하고 코드 적용 범위를 유지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿