boolean function(void)
{
return TRUE;
}
在单元测试期间,此函数是否可以返回false?
详细说明:
我正在研究在Tessy中完成的复杂设备驱动程序的单元测试用例。默认情况下,tessy将unsigned char function
的传递值设置为“无关”。使用此接口,返回值始终为TRUE
现在,之前的一位测试人员通过将unsigned char function
的接口设置为“input”并将其设置为FALSE
来测试此单元,这会导致返回值为FALSE
而不是{{1 }}。
根据我的理解,这个测试用例似乎无效,因为这个函数不能接受任何输入,并且总是返回true。
答案 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 ++(有类)。