-1

我使用 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

我现在的问题是,returnin 函数verifyValue只影响verifyValue调用函数(又名测试)。

有没有可能中止调用函数?

4

2 回答 2

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());
    }
}
于 2013-09-16T12:55:14.007 回答
0

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

throw new Exception("Test Failed - Stopping the program execution");
于 2013-09-16T12:55:08.127 回答