2014-04-07 134 views
0

我已经在PHP中编写了自定义测试方法,以便在运行简单测试时为我提供自定义响应。有没有办法在C中实现这一点,而不必重新发明轮子?C - 编写自定义处理程序

function test($assertion, $msg = null) 
{ 
    assert_options(ASSERT_WARNING, false); 

    if(assert($assertion)) 
    { 
     echo "PASS: {$assertion}\n"; 
    } 
    else 
    { 
     echo $msg, "\n", "FAIL: {$assertion}\n"; 
    } 
} 

我的解决办法:(编辑)

void test(bool expected, bool actual) 
{ 
    printf((expected == actual) ? "PASS" : "FAIL"); 
} 
+0

我真的不知道你在问什么。如果你只是想要一个函数来做一个软断言,看起来你已经有了。你真的在找什么? – Avery

+0

我很抱歉,几分钟前我刚刚提出了该解决方案。有点肮脏,但为了运行简单的测试,我认为这样做。 – theGrayFox

回答

0

我认为这是你在找什么:

void test(bool expected, bool actual, char *msg) 
{ 
    printf(((expected == actual) ? "PASS: %s\n" : "FAIL: %s\n"), msg); 
} 

它具有相同的测试样的特点和它以与PHP函数相同的格式输出简单的消息。请注意,我没有测试过这个,我不确定在printf中的三元组是否真的编译,但我的猜测是它确实。

+0

不应该'''char * msg''是'''const * char msg'''吗?有区别吗?在这种情况下,我假设msg代表失败的消息。我喜欢你添加的内容。尼斯。 – theGrayFox

+0

如果我的编程帽是正确的,你可能会有一个额外的支撑,我认为这是唯一的警告你会得到。 – theGrayFox

+0

从函数的角度来看,const并不重要。把它作为一个const可能是明智的,只是为了确保消息没有被修改,但编译器不应该发疯。 – Avery