mirror of
https://github.com/erg-lang/erg.git
synced 2025-10-01 13:11:11 +00:00

Some additional modifications - Fix typing errors to English instead of Japanese - Update hash value - Additional translation - コメント内のですます調をだ、である調に変更した - "可能"と"できる"が混ざっていたためこれらを"できる"に統一した
2 KiB
2 KiB
testサブコマンド
ergコマンドにはtestというサブコマンドがあり、テスト実装、及び実行の支援を行う。
Testデコレータ(@Test)
Ergではパッケージ中のtests
ディレクトリか*.test.er
ファイル中の@Test
を付けたサブルーチンをerg test
コマンドでテストする。
tests
のサブルーチンはブラックボックステスト(非公開関数をテストしない)、*.test.er
のサブルーチンはホワイトボックステスト(非公開関数もテストする)を担当する。
# tests/test1.er
{add; ...} = import "foo"
@Test
test_1_plus_n(n: Nat) =
assert add(1, n) == n + 1
実行結果がサマリとして表示され、各種ファイル形式(.md, .csv, etc.)で出力もできる。
Doc Test
Ergでは#
, #[
以降がコメント行となるが、##
, #[[
でdoc commentとなり、VSCodeなどエディタからコメントをマークダウンで表示できる。
さらにdoc comment中のソースコードはergと指定されていれば、erg testコマンドで自動テストされる。
以下はテストの例である。
VM = ...
...
#[[
execute commands.
```python
# 標準構成のVM
{vm1; ...} = import "tests/mock"
assert vm1.exec!("i = 0") == None
assert vm1.exec!("i").try_into(Int)? == 0
```
]]#
.exec! ref self, src =
...
...
テストの際に使う模擬オブジェクト(モックオブジェクト)はtests/mock
モジュールに定義する。