erg/doc/JA/tools/test.md
GreasySlug fd7dddb9ab Doc: fix the writing style
Some additional modifications
- Fix typing errors to English instead of Japanese
- Update hash value
- Additional translation
- コメント内のですます調をだ、である調に変更した
- "可能"と"できる"が混ざっていたためこれらを"できる"に統一した
2022-09-18 16:49:02 +09:00

2 KiB

testサブコマンド

badge

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モジュールに定義する。