generated at
Nimble+unittestモジュールでテストを書く
Nimble+unittestモジュールでテストを書く

テストの実行方法
nimbleを使用して nimble init でプロジェクトを作成したとき tests というディレクトリが生成される
testsディレクトリ配下に t で始まるファイル名nimというファイルを作成すると、 nimble test 時にテストが走る
例:test1.nim

テストコードの書き方
unittestモジュールを使用する
以下に proctest というモジュールを作成し、テストする例を記す
ディレクトリ構成
text
プロジェクトルート/ ┣ src/ ┃ ┗ proctest.nim ┗ tests/ ┗ test1.nim
proctest.nim
proc plus(x, y: int): int = return x + y
test1.nim
import unittest include proctest suite "plus": test "1 + 1": check plus(1, 1) == 2 test "-1 + 1": check plus(-1, 1) == 0
proctest.plus プロシージャは * をつけていないため、非公開プロシージャである
非公開プロシージャをテストするには include を使用する
ただし、includeを使用するとincludeしたモジュールにかかれている when isMainModule ブロックのコードまでテストコードのファイル内に展開されてしまい、テスト時に実行されてしまう
このことは、includeするモジュール内に quit 0 などのプロセスを終了するコードを含められないことを意味する
回避策1
1. たとえば実行ファイルとしてのメイン処理を実装しているモジュールにはプロシージャは書かない
2. テストしたいプロシージャは別モジュールに分ける
3. メインからはそれをincludeする
回避策2
1. メイン処理のブロックを when isMainModule から when isMainModule and not defined modeTest と書く
2. tests ディレクトリ配下に以下のファイルを配置、あるいは追記する
tests/config.nims
switch("d", "modeTest")
意味
nimble test が実行される時は tests/config.nims が読み込まれる
読まれる時に modeTest というフラグを立てる
メインのモジュールがincludeされたときに modeTest が立ってる場合はメインブロックが処理されなくなる