Go testify 패키지

Jmnote (토론 | 기여)님의 2023년 6월 6일 (화) 16:04 판 (→‎개요)

1 개요

Testify - Thou Shalt Write Tests
테스티파이 - 테스트를 작성하라
  • 코드가 의도대로 작동하는 것을 검증하기 위한 여러가지 도구를 제공하는 Go 패키지 세트
  • 장점
    • 쉬운 어설션
    • 목 작성(Mocking)
    • 테스트 스위트 인터페이스 및 함수

2 assert 패키지

  • assert 패키지는 Go에서 더 나은 테스트 코드를 작성할 수 있는 몇 가지 유용한 메소드를 제공한다.
    • 친절하고 읽기 쉬운 오류 설명 프린트
    • 가독성 있는 코드 작성 가능
    • 필요시 각 어설션에 설명 메시지 추가
  • 다음 예시를 보자.
package yours

import (
  "testing"
  "github.com/stretchr/testify/assert"
)

func TestSomething(t *testing.T) {

  // 같음 확인
  assert.Equal(t, 123, 123, "they should be equal")

  // 같지 않음 확인
  assert.NotEqual(t, 123, 456, "they should not be equal")

  // nil 확인 (오류에 적절하다)
  assert.Nil(t, object)

  // nil 아님 확인 (뭔가 있기를 기대할 때 적절하다)
  if assert.NotNil(t, object) {

    // object가 nil이 아니라는 것을 확인했으므로
    // 오류 없이 안전하게 추가 확인을 할 수 있다
    assert.Equal(t, "Something", object.Value)

  }

}
  • 모든 assert func는 testing.T 객체를 첫 번째 인수로 사용한다. 이것이 일반적인 go 테스트 기능을 통해 오류를 작성하는 방법이다.
  • 모든 assert func는 어설션이 성공했는지 여부를 나타내는 bool을 반환한다. 이는 특정 조건에서 계속해서 어설션을 계속하려는 경우에 유용하다.
  • 여러 번 어설션하려는 경우, 다음과 같이 하자.
package yours

import (
  "testing"
  "github.com/stretchr/testify/assert"
)

func TestSomething(t *testing.T) {
  assert := assert.New(t)

  // 같음 확인
  assert.Equal(123, 123, "they should be equal")

  // 같지 않음 확인
  assert.NotEqual(123, 456, "they should not be equal")

  // nil 확인 (오류에 적절하다)
  assert.Nil(object)

  // nil 아님 확인 (뭔가 있기를 기대할 때 적절하다)
  if assert.NotNil(object) {

    // object가 nil이 아니라는 것을 확인했으므로
    // 오류 없이 안전하게 추가 확인을 할 수 있다
    assert.Equal("Something", object.Value)
  }
}

3 require 패키지

require 패키지는 assert 패키지와 동일한 글로벌 함수를 제공하지만 boolean 결과를 반환하는 대신 현재 테스트를 종료한다.

자세한 내용은 t.FailNow를 참조하자.

4 mock 패키지

5 suite 패키지

6 설치

  • testify를 설치하려면, go get을 사용하자.
go get github.com/stretchr/testify
  • 이렇게 하면 다음 패키지들을 사용할 수 있게 된다.
github.com/stretchr/testify/assert
github.com/stretchr/testify/require
github.com/stretchr/testify/mock
github.com/stretchr/testify/suite
github.com/stretchr/testify/http (deprecated)

다음 템플릿을 활용하여 자신의 코드에 testify/assert 패키지를 임포트해보자.

package yours

import (
  "testing"
  "github.com/stretchr/testify/assert"
)

func TestSomething(t *testing.T) {

  assert.True(t, true, "True is true!")

}

7 최신 유지

  • testitfy를 최신 버전으로 업데이트하려면, go get -u github.com/stretchr/testify를 사용하자.

8 같이 보기

9 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}