Golang 테스트 편하게 하기
언제나처럼 테스트 좀 편하게 실행할 방법이 없나 찾다가 gotestsum 이라는 괜찮은 프로젝트를 발견했다. 내가 원하는 것들을 상당 수 갖추고 있더라.
두번째 항목이 조금 부족하긴한데, gotestsum/contrib 에 있는 기능과 macOS terminal-notifier를 같이 쓰면 쓸만하다. VSCode에서 코드를 수정하고 저장하면 watch 모드로 돌고 있던 테스트들을 실행하고, 성공/실패는 알림 메시지로 받는다. 세부적인 실패 메시지는 알림 메시지 클릭해서 뜨는 iTerm2 쪽에서 확인하는 식으로 작업하고 있다.
실행 예
gotestsum --watch --post-run-command=notify -- -v ./...
이 상태에서 파일을 하나 변경하면 테스트를 실행하고 이에 해당하는 macOS 알림을 보낸다.
여기서 macOS 알림이 필요없다면 위 명령에서 --post-run-command=notify
부분은 없어도 된다.
수정한 코드
terminal-notifier를 호출하는 contrib/notify
코드를 조금 수정해서,
테스트 실행 시각을 표시하게 하고, 알림 click했을 때 포커스를 iTerm2 쪽에 가게했다.
diff --git a/contrib/notify/notify_darwin.go b/contrib/notify/notify_darwin.go
index ad68389..ea6ec81 100644
--- a/contrib/notify/notify_darwin.go
+++ b/contrib/notify/notify_darwin.go
@@ -6,6 +6,7 @@ import (
"os"
"os/exec"
"strconv"
+ "time"
)
func main() {
@@ -28,6 +29,7 @@ func main() {
}
subtitle := fmt.Sprintf("%d Tests Run", total)
+ title = fmt.Sprintf("%s - %s", time.Now().Format("2006-01-02 15:04"), title)
if errors > 0 {
subtitle += fmt.Sprintf(", %d Errored", errors)
}
@@ -42,6 +44,7 @@ func main() {
"-title", emoji + " " + title,
"-group", "gotestsum",
"-subtitle", subtitle,
+ "-activate", "com.googlecode.iterm2",
}
cmd := exec.Command("terminal-notifier", args...)
log.Printf("%#v", cmd.Args)
-
전에 C++ 테스트 관련해서 얘기한 것처럼 CLI 환경에서 실행하고 결과를 볼 수 있어야 ↩︎
-
Test runner 관련해서 말한 것처럼 테스트 성공/실패 여부를 쉽게 알 수 있어야 한다. ↩︎