HOWTO · Go
Go에서 어설션 사용
이 튜토리얼은 GoLang에서 assert를 사용하는 방법을 보여줍니다.
이 페이지의 내용
이 튜토리얼은 GoLang에서 assert를 사용하는 방법을 보여줍니다.
GoLang에서 assert 사용
GoLang은 assert에 대한 기본 제공 지원을 제공하지 않지만 Testify API에서 널리 사용되는 타사 패키지 assert를 사용할 수 있습니다. assert 패키지는 다른 언어의 assert 메서드와 마찬가지로 GoLang 코드를 테스트하는 데 사용됩니다.
assert 패키지는 Go 시스템 테스트를 위한 포괄적인 도구를 제공합니다. 다양한 테스트 유형에 대한 많은 방법을 제공합니다. assert 방법에 대한 정보는 여기에서 찾을 수 있습니다.
assert 패키지를 사용하기 전에 다운로드하여 로드해야 합니다. assert 패키지를 얻으려면 아래 단계를 따르십시오.
-
관리자로 명령 프롬프트를 엽니다.
-
Go 프로젝트의 디렉터리로 이동합니다.
-
go.mod파일이 없는지 확인하십시오. 디렉터리에go.mod파일이 포함되어 있으면 삭제하고 다음 단계로 이동합니다. -
이제
assert패키지에 대한go.mod파일을 초기화하고 다음 명령을 실행합니다.go mod init github.com/stretchr/testify/assert
-
이제
assert패키지를 다운로드하여 설치하십시오. 다음 명령을 실행합니다.go get github.com/stretchr/testify/assert
-
위의 코드는
assert패키지를 가져오지만 다른 종속성이 필요할 수도 있습니다. 다음 명령을 실행하여 다른 모든 종속성을 다운로드합니다.go mod download
패키지를 다운로드하고 설치하면 테스트를 실행할 수 있습니다. 예를 들어 보겠습니다.
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
assert := assert.New(t)
var Demo1 string = "Hello, This is delftstack.com!"
var Demo2 string = "Hello, This is delftstack.com!"
assert.Equal(Demo1, Demo2, "Both strings should be equal")
}
위의 코드는 두 문자열이 같은지 여부를 테스트합니다. 문자열이 같으면 테스트가 통과됩니다. 그렇지 않으면 실패했습니다.
출력을 참조하십시오.
=== RUN TestAssert
--- PASS: TestAssert (0.00s)
PASS
위의 출력은 테스트가 통과되었음을 보여줍니다. 하지만 테스트에 실패하면 어떻게 될까요?
어설션 테스트가 실패하는 예를 살펴보겠습니다.
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
assert := assert.New(t)
var Demo1 string = "Hello, This is delftstack.com!"
var Demo2 string = "Hello, This is delftstack"
assert.Equal(Demo1, Demo2, "Both strings should be equal")
}
보시다시피 이제 두 문자열이 같지 않으므로 테스트가 실패해야 합니다. 출력을 참조하십시오.
RUN TestAssert
prog.go:15:
Error Trace: /prog.go:15
Error: Not equal:
expected: "Hello, This is delftstack.com!"
actual : "Hello, This is delftstack"
Diff:
--- Expected
+++ Actual
@@ -1 +1 @@
-Hello, This is delftstack.com!
+Hello, This is delftstack
Test: TestAssert
Messages: Both strings should be equal
--- FAIL: TestAssert (0.00s)
FAIL
Program exited.
보시다시피 테스트는 이제 실패했고 프로그램은 테스트에 대한 완전한 정보를 보여줍니다. 다른 테스트를 실행하기 위해 assert와 함께 사용할 수 있는 equal과 같은 많은 메서드가 있습니다.
메소드 assert.Nil 및 assert.NotNil에 대한 예제를 시도해 보겠습니다.
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
var demo = []string{
"delftstack.123@hotmail.com",
"Delftstack <demo@delftstack.com>",
"demo@delftstack.tv",
"demohotmail.com",
"demo@"}
// assert for nil
assert.Nil(t, demo)
}
위의 코드는 주어진 값이 nil인 경우 개체를 확인합니다. 출력을 참조하십시오.
=== RUN TestAssert
prog.go:19:
Error Trace: /prog.go:19
Error: Expected nil, but got: []string{"delftstack.123@hotmail.com", "Delftstack <demo@delftstack.com>", "demo@delftstack.tv", "demohotmail.com", "demo@"}
Test: TestAssert
--- FAIL: TestAssert (0.00s)
FAIL
Program exited.
비슷하게,
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
var demo = []string{
"delftstack.123@hotmail.com",
"Delftstack <demo@delftstack.com>",
"demo@delftstack.tv",
"demohotmail.com",
"demo@"}
// assert for not nil
assert.NotNil(t, demo)
}
위의 코드는 nil 객체 또는 값이 아닌지 테스트합니다. 출력을 참조하십시오.
=== RUN TestAssert
--- PASS: TestAssert (0.00s)
PASS
Program exited.