PowerShellスクリプトでテストコードを書く

テストコードを書いたら、Makefileにテストコードを実行するターゲットを追加する。「make test」でテストコードが実行されるようにしたい。書き換えたあとのMakefileは次のようになる。

Makefile

CMD=    csv2tsv.exe

SRCS=   $(wildcard *.c)
OBJS=   $(SRCS:.c=.o)

CC= clang
CFLAGS+=-g

build: $(CMD)

$(CMD): $(OBJS)
    $(CC) $(CFLAGS) -o $(CMD) $(OBJS)

.c.o:
    $(CC) -c $< -o $@

test: $(CMD)
    pwsh .\tests\test001.ps1

clean:
    rm -f *.exe
    rm -f *.o
    rm -f *.ilk
    rm -f *.pdb

test:というターゲットが追加されていることがわかるだろう。ここでテストスクリプトを実行している。

書き換えてからmake testと実行すれば、次のようにテストコードの実行を確認できる。

make testでテストコードの実行を確認

PS C:\Users\daichi\Documents\vscode-csv2tsv> make test
pwsh .\tests\test001.ps1
テスト001: 成功
PS C:\Users\daichi\Documents\vscode-csv2tsv>

tasks.jsonに反映させてVisual Studio Codeから実行

あとはtasks.jsonを書き換えて、Visual Studio Codeから「make test」が実行されるようにすればテストコードのセットアップは完了だ。書き換えたtasks.jsonファイルは次のようになる。

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Clang",
            "type": "process",
            "command": "make",
            "args": [
                "build"
            ],
            "problemMatcher": [],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "Test",
            "type": "process",
            "command": "make",
            "args": [
                "test"
            ],
            "problemMatcher": [],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

これで「Ctrl」+「Shift」+「B」を押すか、メニューから「ターミナル」→「ビルドタスクの実行」を選択して、リストから「Test」を選択すれば、次のようにテストコードが実行される。

  • Visual Studio Codeからテストコードを実行

    Visual Studio Codeからテストコードを実行

コードを書き換えたらテストコードを実行し、すべてのテストに通るか確認する。この作業を繰り返すことで、これまでの動作と互換性を維持しながら開発を進めることができるというわけだ。

テストコードを取り込むのは、最初はこういったシンプルでわかりやすいものから取り組んでみるとよい。