我试图在运行测试后检查对象的状态。此状态包含在一个集合中。是否可以使用 DUnitX 属性将预期状态传递给测试用例,以便我可以对所有不同的输入使用相同的测试?
我试图将集合作为常量或集合传递,但在我的测试例程中,它总是作为空集到达。
- 这完全可以使用属性吗?
- 如果集合相同,您将如何测试?
示例代码:
type
TResult = (resOK,resWarn,resError);
TResultSet = set of TResult;
const
cErrWarn : TResultSet = [resWarn];
type
[TestFixture]
TMyTest = class(TBaseTest)
[Test]
[TestCase('Demo1','InputA,[resWarn]')] // <-- tried as a set
[TestCase('Demo2','InputB,cErrWarn')] // <-- tried as a constant
procedure Test(Input:string; ExpectedResult: TResultSet);
end;
procedure TMyTest.Test(Input:string; ExpectedResult: TResultSet);
begin
// ExpectedResult is always the empty set []
RunTests(MyObject(Input));
Assert.AreEqual(ExpectedResult, MyObject.ResultSet);
end;
我还尝试将预期结果定义为数组,但 DUnitX 甚至不再调用测试。可能这只是“太多”
procedure Test(Input:string; ExpectedResult: array of TResult);
到目前为止,我能想到的最好的方法是使用以下方法。抽取最多三个(在此处插入您最喜欢的整数......)预期状态的样本并分别检查这些状态。这不是我真正希望的,但它确实起到了作用。
procedure Test(Input:string; R1,R2,R3: TResult);
非常感谢您的帮助。:)