공대생 정리노트

Local package import하기 / Test 자동화 본문

언어/Go

Local package import하기 / Test 자동화

woojinger 2020. 12. 19. 21:58

Local package import

Go에서 local package를 import 할 때 relative path로 적어놓으면 local import ~ in non-local package라고 에러가 뜬다.

이 문제는 import의 시작 path가 $Home/go/src에서 시작하기 때문이다.

stackoverflow.com/questions/35480623/how-to-import-local-packages-in-go

 

How to import local packages in go?

I am new to go and working on an example code that I want to localize. In the original main.go import statement it was: import ( "log" "net/http" "github.com/f...

stackoverflow.com

이 문제를 해결하는 방법은 다음과 같다. (go document 참고 golang.org/doc/tutorial/call-module-code)

 

1. ./myapp을 main.com/myapp으로 고친다.

2. 밑과 같이 go.mod에서 replace 문을 통하여 main.com/myapp module path를 relative path로 바꿔준다.

3. 저장하고 실행하면 해결! 그리고 실행하면 다음과 같이 require 문이 새로 추가된다. 

require문은 dependency를 명시하는 것이다. 만약 main.com/myapp이 publish된 것이라면 해당하는 버전에 맞춰 바꿔 써주어야 할 것이다.

 

Test 자동화

github.com/smartystreets/goconvey

 

smartystreets/goconvey

Go testing in the browser. Integrates with `go test`. Write behavioral tests in Go. - smartystreets/goconvey

github.com

install 방법

저렇게 install을 하고 자신의 프로젝트의 path에도

go install github.com/smartystreets/goconvey

을 해주어야한다!!!

 

설치 후 테스트를 하고자 하는 폴더에 goconvey를 입력하여 실행한다.

localhost:8080에 서버가 열린다

이후 작업하다 파일을 저장하면 변경을 감지하여 테스트 파일을 자동으로 실행시켜주고 결과를 서버에 띄워준다.

 

Test를 작동하기에 좋은 라이브러리로는 밑의 assert가 있다.

github.com/stretchr/testify

 

 

 

stretchr/testify

A toolkit with common assertions and mocks that plays nicely with the standard library - stretchr/testify

github.com

go get github.com/stretchr/testify/assert

assert를 설치하고 test file의 import에 github.com/stretchr/testify/assert 를 쓰면 assert를 쓸 수 있게 된다.

assert := assert.New(t)

..

assert.Equal(http.StatusOK, res.Code)

 

'언어 > Go' 카테고리의 다른 글

Effective Go (1) 요약  (0) 2021.10.18
동시성 패턴  (0) 2021.05.05
고루틴  (0) 2021.05.03
Server 함수 정리  (0) 2020.12.29
Test시 Cannot import "main"이 뜨며 build fail  (0) 2020.12.20
Comments