소프트웨어 개발에서 테스트는 매우 중요하다. 테스트는 여러가지 단계로 나누어 수행되는데 모듈별 테스트로부터 통합테스트까지 다양한 기준점으로 나뉜 테스트들이 개발과정 곳곳에서 수행된다.
단위 모듈 관점에서 테스트 코드를 넣고 이를 주기적으로 돌리는 방식이 단위 테스트이다. (한국에서) 근 20년동안 가장 사랑받는 언어인 Java에서 사용하는 JUnit과 같은 단위테스트 방법이 가장 유명하고 이러한 테스트를 통한 개발 방법론도 있다. (TDD)
Go의 영향력이 높아지면서 Go에서도 테스트에 대한 요구들이 나오고 있고 본 페이지를 통해 그 방법을 정리하고자 한다. 일반적인 Go에서 테스트 하는 방법과 Cobra라는 cli 저작툴(프레임워크)에서 생성된 로직을 테스트하는 방법을 정리한다.
Go에서 시스템적으로 정의하는 테스트 방법은 매우 간단하다. 다음의 규칙을 지켜주면 테스트 된다.
작성 규칙은 다음과 같다.
_test.go
로 끝난다.Test
로 시작한다.t *testing.T
를 받는다.t.Fail()
을 호출한다.이를 통해 아래와 같이 작성한다.
package test
import "testing"
func TestFoo(t *testing.T) {
// todo test code, the variable 'result' should be defined
expected := 1
actual := 0
if result != actual {
t.Fatal("원하는 결과가 아니네요.")
// t.Error()
// t.Fail()
// t.Log()
}
}