DUnitXのテストの書き方

テストクラスの自動登録

ITestRunner#UseRTTIプロパティをTrueにすると、実行時型情報を使用してテストクラスを自動的に登録できます。

// 自動的にテストクラスが登録される。
runner.UseRTTI := True;
// TDUnitX.RegisterTestFixture関数でテストクラスを登録する。
runner.UseRTTI := False;

テストクラス

テストクラスには[TestFixture]属性をつけます。

TTestCaseクラスを継承する必要はありません。

[TestFixture]
TestTCalc = class(TObject)
end;

フィクスチャセットアップメソッド

フィクスチャセットアップメソッドには[SetupFixture]属性をつけます。

テストクラスのテストが実行される前に一度だけ実行されます。

DUnitにこの機能はありませんでした。

[TestFixture]
TestTCalc = class(TObject)
public
  [SetupFixture]
  procedure フィクスチャセットアップ;
end;

フィクスチャティアダウンメソッド

フィクスチャティアダウンメソッドには[TeardownFixture]属性をつけます。

テストクラスのテストが実行された後に一度だけ実行されます。

DUnitにこの機能はありませんでした。

[TestFixture]
TestTCalc = class(TObject)
public
  [TeardownFixture]
  procedureフィクスチャティアダウン;
end;

テストセットアップメソッド/テストティアダウンメソッド

テストセットアップメソッドには[Setup]属性をつけます。

テストティアダウンメソッドには[TearDown]属性をつけます。

メソッドの名前を自由につけられるようになりました。

[TestFixture]
TestTCalc = class(TObject)
public
  [Setup]
  procedure 前処理;
  [TearDown]
  procedure 後処理;
end;

テストメソッド

[Test]属性

テストするメソッドには[Test]属性をつけます。

メソッドの名前を自由につけられるようになりました。

[TestFixture]
TestTCalc = class(TObject)
public
  [Test]
  procedure GetNameメソッドのテスト;
end;

[Test]属性の引数

[Test]属性は引数に真偽値をとります。

引数が偽(False)のとき、テストは実行されません。

[TestFixture]
TestTCalc = class(TObject)
public
  [Test(False)]
  procedure 実行されないテスト;
end;

TestCase属性

TestCase属性は引数をとります。

第1引数はケース名、第二引数はテストメソッドの引数になります。

[TestCase('TestA', '8,2,10')]
procedure TestAdd(Value1, Value2, _Result: Integer);

TestCase属性の繰り返し

TestCase属性を複数記述できます。

[TestCase('TestA', '0,0,1')]
[TestCase('TestB', '8,2,10')]
[TestCase('TestC', '0,1,1')]
procedure TestAdd(Value1, Value2, _Result: Integer);

条件を変えてテストが出来ます。

_images/007.gif

引数の区切り文字

TestCase属性の引数はカンマで区切ります。

[TestCase('ケース名', '引数,引数,…')]

第3引数で区切り文字を指定できます。

[TestCase('TestB', '3/4/-1','/')]
procedure TestSub(Value1, Value2, _Result: Integer);

引数にカンマを含めたいときは区切り文字を指定すると便利です。