Lua 트랙에서 테스트하기

Exercism에서 Lua 연습 문제를 테스트하는 방법을 배워요.


테스트는 이렇게 실행해요

$ busted

busted를 설치하는 방법은 Lua 로컬 설치를 참고해요.

단위 테스트 디버깅

이 가이드에서는 VSCode를 Busted 테스트 프레임워크, Local Lua Debugger와 함께 설정하는 방법을 살펴봐요. 그러면 테스트 명세와 그 명세가 테스트하는 파일 양쪽에 중단점을 걸 수 있어서 테스트 주도 개발 워크플로를 간편하게 진행할 수 있어요. 이 방법이 정석은 아니에요. 잘 동작할 수 있는 다른 방법도 많지만, 적어도 이 방법으로라면 바로 시작은 할 수 있어요. (참고: 이 방법은 Windows 10과 Ubuntu 20.04에서 테스트해서 잘 동작하는 것을 확인했어요.)

어려운 용어는 이쯤에서 접어두고 시작해볼까요.

이 부분들은 과정을 설명하기 위한 것뿐이니 건너뛰어도 돼요.

VSCode에서 다른 Lua 디버거 확장 프로그램은 모두 제거하거나 비활성화하고, Local Lua Debugger를 설치해요. 그다음 다음과 같이 사용자 지정 실행 구성을 만들어요:

{
	"name": "Busted",
	"type": "lua-local",
	"request": "launch",
	"program": {
		"command": "busted"
	},
	"cwd": "${workspaceFolder}/${relativeFileDirname}",
	"args": ["${file}"],
	"integratedTerminal": true
}

참고: integratedTerminal 속성은 Property integratedTerminal is not allowed라는 경고를 표시하지만, 이건 그냥 무시해도 괜찮아요.

cwd 속성은 현재 작업 디렉터리를 지정하는데, 이건 경로를 확인할 때 중요해요. 기본적으로 Exercism은 각 연습 문제를 트랙 이름 폴더 아래의 각자 폴더에 설치해요. 그래서 Lua의 경우에는 다음과 같은 구조가 돼요:

└── Exercism/
    ├── lua/
    │   ├── armstrong-numbers
    │   ├── bank-account
    │   ├── binarysearch
    │   └── etc...
    └── python/
        └── etc...

그럼 /lua 폴더에서 이렇게 VSCode를 열면:

C:\users\<username>\Exercism\lua> code .

또는

/home/<username>/exercism/lua> code .

VSCode는 워크스페이스에서 각 연습 문제를 각자의 폴더에 보여줘요. 그렇다면 실행 구성에서 현재 작업 디렉터리인 cwd를 각 연습 문제 폴더로 바꿔줘야 해요. 이건 ${workspaceFolder}와 ${relativeFileDirname} VSCode 변수를 조합해서 해요.

args 속성은 Busted에 전달할 인자를 나타내요. 여기서는 ${file} 변수로 현재 열려 있는 파일을 가리켜요.

그다음 지금 진행 중인 연습 문제의 테스트 파일, 즉 <exercise_name>_spec.lua 파일 맨 위에 다음 세 줄을 추가해요:

if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then
  require("lldebugger").start()
end

이제 디버거로 테스트를 실행하고 싶을 때는 테스트 파일을 연 다음, 왼쪽의 Run and Debug(Ctrl+Shift+D) 사이드바에서 방금 만든 실행 구성을 실행해요. 테스트 파일에 포커스가 있으면 실행 구성이 그 테스트를 실행하고, 중단점에서 멈추며, 출력은 아래쪽 통합 터미널의 DEBUG CONSOLE 탭에 표시해요.

즐겁게 코딩해요!