unit TestUnit1;
interface
uses
DUnitX.Types, DUnitX.InternalDataProvider, DUnitX.TestDataProvider, DUnitX.TestFramework;
type
TCalcSourceProvider =
class(TTestDataProvider)
private
FMaxTest: Integer;
public
constructor Create;
override;
function GetCaseCount(
const methodName:
string): Integer;
override;
function GetCaseName(
const methodName:
string):
string;
override;
function GetCaseParams(
const methodName:
string;
const caseNumber: Integer): TValueArray;
override;
end;
type
[TestFixture]
TCalcTestObject =
class
public
[Test]
[TestCaseProvider(TCalcSourceProvider)]
// alternativ auch: [TestCaseProvider('CalcSourceProvider')] (siehe initialization)
procedure TestAdd(Value1, Value2, Expected: Double);
end;
implementation
constructor TCalcSourceProvider.Create;
begin
inherited;
FMaxTest := 11*11;
end;
function TCalcSourceProvider.GetCaseCount(
const methodName:
string): Integer;
begin
Result := FMaxTest;
end;
function TCalcSourceProvider.GetCaseName(
const methodName:
string):
string;
begin
Result := methodName;
end;
function TCalcSourceProvider.GetCaseParams(
const methodName:
string;
const caseNumber: Integer): TValueArray;
var
A: Double;
B: Double;
begin
A := caseNumber
div 11;
B := caseNumber
mod 11;
Result := TValueArray.Create(A, B, A + B);
end;
procedure TCalcTestObject.TestAdd(Value1, Value2, Expected: Double);
begin
{ Hier testen wir erstmal, ob unser Dataprovider überhaupt funktioniert. Wenn das klappt, ersetzen wir das mit dem Test der TCalc-Methode Add }
Assert.AreEqual(Expected, Value1 + Value2, 0.1);
end;
initialization
TestDataProviderManager.RegisterProvider('
CalcSourceProvider', TCalcSourceProvider);
TDUnitX.RegisterTestFixture(TCalcTestObject);
end.