.
.
.
.
.
.
.
Go 언어로 첫 번째 실패하는 테스트를 작성하는 방법을 설명드리겠습니다. Go에서는 표준 라이브러리의 testing 패키지를 사용하여 테스트를 작성합니다.
예시: 로그인 기능
요구 사항:
- 사용자가 올바른 사용자명과 비밀번호로 로그인할 수 있어야 한다.
테스트 케이스 정의:
- TestLoginWithValidCredentials: 유효한 사용자명과 비밀번호로 로그인 시도를 테스트.
실패하는 테스트 작성 (레드):
- 프로젝트 구조:
-
project/ ├── authService.go └── authService_test.go
- go
코드 복사
- authService.go: 로그인 기능을 제공하는 서비스 파일입니다.
-
go코드 복사package main type AuthService struct{} func (a *AuthService) Login(username, password string) bool { // 현재는 아무런 구현도 되어 있지 않아서 항상 false를 반환합니다. return false }
- authService_test.go: 테스트 파일입니다.
-
go코드 복사package main import ( "testing" ) func TestLoginWithValidCredentials(t *testing.T) { // Arrange: 유효한 사용자명과 비밀번호를 가진 사용자 생성 validUsername := "validUser" validPassword := "validPassword" // Arrange: AuthService 인스턴스 생성 authService := AuthService{} // Act: 로그인 시도 result := authService.Login(validUsername, validPassword) // Assert: 로그인 성공 여부 확인 if !result { t.Errorf("expected true, got %v", result) } }
테스트 실행:
- 터미널에서 테스트를 실행합니다.
bash코드 복사go test
예상 결과:
테스트를 실행하면 TestLoginWithValidCredentials 테스트가 실패할 것입니다. 실패 이유는 AuthService 구조체의 Login 메서드가 아직 구현되지 않았기 때문입니다.
전체 코드 요약:
authService.go:
go
코드 복사
package main type AuthService struct{} func (a *AuthService) Login(username, password string) bool { // 현재는 아무런 구현도 되어 있지 않아서 항상 false를 반환합니다. return false }
authService_test.go:
go
코드 복사
package main import ( "testing" ) func TestLoginWithValidCredentials(t *testing.T) { // Arrange: 유효한 사용자명과 비밀번호를 가진 사용자 생성 validUsername := "validUser" validPassword := "validPassword" // Arrange: AuthService 인스턴스 생성 authService := AuthService{} // Act: 로그인 시도 result := authService.Login(validUsername, validPassword) // Assert: 로그인 성공 여부 확인 if !result { t.Errorf("expected true, got %v", result) } }
이로써 Go 언어로 첫 번째 실패하는 테스트를 작성했습니다. 다음 단계는 "그린" 단계에서 이 테스트를 통과하도록 코드를 작성하는 것입니다.