Я пытаюсь проверить состояние объекта после запуска теста. Это состояние содержится в множестве. Возможно ли передать ожидаемое состояние в тестовый пример с использованием атрибутов 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);
Помощь приветствуется.:)