Improve this page Github へのログインが必要です。 簡単な修正は、ここから fork、オンライン編集、pull request ができます。 大きな修正については、 通常の clone で行って下さい。 Page wiki 関連するWikiページを参照・編集 English このページの英語版(原文)

単体テスト

UnitTest:
	unittest FunctionBody

単体テストは、クラスが適切に動作しているかのチェックを行う、 一連のテストケースのことです。理想的には単体テストは、 プログラムがコンパイルされるたび毎回実行されるべきです。

単体テストは、以下のように定義される特別な関数です:

unittest {
  ...test code...
}

モジュール内には、構造体、union、classの中を含めて、 何個でも unittest 関数を置くことができます。 これらはソースコードの先頭方向から順番に実行されます。 スタイルとしては、各関数のための単体テストは、 テスト対象の関数の直後に書かれるべきです。

コンパイラのスイッチ、dmd では -unittest fを指定することで、 生成される実行バイナリにテストコードを含めることができます。 単体テストのコードは、静的な初期化が済んだ後、 main() 関数が実行される前に、呼び出されます。

例えば、二つの数を足すクラス Sum ならば:

class Sum {
  int add(int x, int y) { return x + y; }

  unittest
  {
    Sum sum = new Sum;
    assert(sum.add(3,4) == 7);
    assert(sum.add(-2,0) == -2);
  }
}

バージョン指定

単体テストが有効な状態でコンパイルしているときは、 バージョン識別子 unittest が定義済みとなります。