Go에서 어설션 사용
이 튜토리얼은 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.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook