返回调用函数

时间:2013-09-16 12:49:10

标签: c#

我使用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而不影响调用函数(又称测试)。

是否有可能中止调用函数?

2 个答案:

答案 0 :(得分:1)

这通常是通过Exceptions完成的。它们自动传播通过调用堆栈。以下是基于您的代码的示例:

public class TestFailedException : Exception
{
    public TestFailedException(string message) : base(message) { }
}

void Test()
{
    try 
    {
        Variable1.Value = 1;
        Variable1.write();
        verifyValue(Variable1, 1);

        //next test steps
        ...

        Console.WriteLine("Test succeeded");
    }
    catch (TestFailedException ex)
    {
        Console.WriteLine("Test failed: " + ex.Message);
    }
}

private void verifyValue(TypeOfVariable Var, double Value)
{
    Var.read();
    if (Var.Value != Value)
    {
        throw new TestFailedException("Actual value: " + Var.Value.ToString()
            + ", expected value: " + Value.ToString());
    }
}

答案 1 :(得分:0)

如果你使用Transaction然后在任何异常中中止所有操作它会更好。对于您当前的代码,您可以通过异常让程序自行停止。像:

throw new Exception("Test Failed - Stopping the program execution");