我必须测试几个具有多个if语句的例程/函数,这些语句会导致stop()或exit()语句停止测试执行。
我想知道测试这类功能的最佳/正确方法是什么?
例如,如果我有以下内容:
void function foo(void)
{
if(conditionA)
{
Terminate( //include infinite while loop resulting in timeout);
}
if(conditionB)
{
Terminate( //includes infinite white loop resulting in timeout);
}
}
当我对conditionA的测试用例属实时,如何点击conditionB?
我想我必须为conditionB创建一个单独的测试用例为true(条件A为false)。但是,测试仍然执行conditionA因为我运行了两个测试用例。测试用例#1,将进入conditionA并退出测试。由于测试用例#1,将不会运行测试用例#2。
那么,我应该如何构建测试范例的流程呢?
目前,我为每个包含多个测试用例的函数提供了一个测试套件。
答案 0 :(得分:1)
在exit
之外使用main
通常是一个坏主意;在流程终止之前,呼叫者几乎没有机会清理任何资源。
想一想......当fopen
失败时会发生什么?那么fgets
,malloc
,pthread_create
,socket
呢?有人打电话给exit
吗?难道你不认为设计你的失败模式与世界其他地方尽可能保持一致是明智的吗?
使用返回值和让调用者决定是否终止 ...然后你可以为每个函数和中提琴构建单独的测试用例!你的问题已经消失......
答案 1 :(得分:0)
简单:
void function foo(void)
{
if(conditionA)
{
if(conditionB)
exit(0);
}
else if(conditionB)
{
exit(0);
}
}