Я использую C# для целей тестирования. Тест состоит из нескольких этапов тестирования. Если один тестовый шаг завершился неудачно, весь тест должен быть прерван. Один тест шаг может выглядеть следующим образом:Возврат вызывающей функции
Variable1.Value = 1;
Variable1.write();
Variable1.read();
if (Variable1.Value != 1)
{
Console.WriteLine("Fail");
return; //this return aborts the test
}
//next test steps
Я хотел бы передать некоторые команды в собственные функции, чтобы обеспечить эффективное программирование тестового примера. Функция для вышеприведенного кода будет выглядеть так.
private void verifyValue (TypeOfVariable Var, double Value)
{
Var.read();
if (Var.Value != Value)
{
Console.WriteLine("Fail");
return;
}
}
И тест будет выглядеть следующим образом
Variable1.Value = 1;
Variable1.write();
verifyValue(Variable1, 1);
//next test steps
Моя проблема теперь, что return
функция verifyValue
только эффекты verifyValue
но не вызывающей функции (так называемый тест).
Есть ли возможность прервать вызывающую функцию?
Есть ли причина, по которой вы не используете модульную систему тестирования и 'Assert'? –
Вы пытаетесь реализовать атомную операцию с помощью операторов return и завершения функции. Я думаю, что это не очень хороший подход. Вместо этого вы можете реализовать классы, которые выполняют все операторы в качестве транзакции и на основе исключений, которые они выбрасывают, вы можете прервать или продолжить операцию. – Slavo
Если ваш пример очень плохой, я согласен с @Slavo. Это не то, как реализовать то, что вы пытаетесь достичь. Говоря это, дорогой, но возможный вариант, бросает исключение. –