我使用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
而不影响调用函数(又称测试)。
是否有可能中止调用函数?
答案 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");