在C

时间:2016-11-03 16:36:57

标签: c++ c unit-testing embedded driver

boolean function(void)
{
   return TRUE;
}

在单元测试期间,此函数是否可以返回false?

详细说明:

我正在研究在Tessy中完成的复杂设备驱动程序的单元测试用例。默认情况下,tessy将unsigned char function的传递值设置为“无关”。使用此接口,返回值始终为TRUE

现在,之前的一位测试人员通过将unsigned char function的接口设置为“input”并将其设置为FALSE来测试此单元,这会导致返回值为FALSE而不是{{1 }}。

根据我的理解,这个测试用例似乎无效,因为这个函数不能接受任何输入,并且总是返回true。

2 个答案:

答案 0 :(得分:0)

由于函数不能返回false,假设它返回false的测试用例确实无效,因为永远无法达到该状态;但是,在内部测试设备的稳健性并防范未来的错误,可能是一个好主意。

但是如果在任何未来的版本中,该函数仍然永远不会返回false(即它的定义永远不会改变),那么使用努力(资源)来测试单元以防止永远不会发生的事情,是浪费资源(和钱)。

然后,在某些不可预见的未来,函数定义更改,然后是变更管理的过程,以识别受影响的任何部分并重新测试这些部分,现在包括#!/bin/bash npm run compile:ts node_modules/webdriverio/bin/wdio npm run clean:ts 返回值。

答案 1 :(得分:0)

如果这是一个类的方法并且它出现在基类中,它可能会在派生类中被覆盖,如下所示:

 class A
 {
    bool function() // note use of a real C++ type, bool
    {
        return true; // note use of a real C++ bool constant
    }
 }

 class B
 {
    bool function() // C++ doesn't have an @overrides annotation
    {
        return false;
    }
 }

 void main()
 {
   A a;
   B b;
   A & c(b)
   assert(a.function());
   assert(! b.function());
   assert(c.function());  // because function is not virtual

在给定'假'布尔值的情况下,您可以获得错误的替代方式:

 #define TRUE 0

[这就是你应该使用真实类型的原因]

编辑:我注意到你的问题被标记为[C]以及[C ++]。这个答案仅适用于C ++(有类)。