如何编写CPPUnit测试
CPPUnit how do I write a test?
好的,我基本上想让球滚动并编写一些CPPUnit测试,但我不知道如何去做。这里我有一些代码,基本上得到一个指向菜单按钮的指针,用于关联的按钮组和位置参数,我该如何创建一个测试呢?
CMenuButton* CMenuContainer::GetButton(const enumButtonGroup argGroup, const int32_t argPosition)
{
CMenuButton* pButton = NULL;
if (argGroup < MAX_GROUP_BUTTONS)
{
pButton = m_ButtonGroupList[argGroup].GetButton(argPosition);
}
return pButton;
回复@Fabio Ceconello,是否有可能为这样的代码设置一些测试?
unsigned long CCRC32::Reflect(unsigned long ulReflect, const char cChar)
{
unsigned long ulValue = 0;
// Swap bit 0 for bit 7, bit 1 For bit 6, etc....
for(int iPos = 1; iPos < (cChar + 1); iPos++)
{
if(ulReflect & 1)
{
ulValue |= (1 << (cChar - iPos));
}
ulReflect >>= 1;
}
return ulValue;
}
CppUnit不太适合为用户界面创建自动化测试。它更适用于只处理的单元。例如,假设您为std::vector
创建了一个替代品,并希望确保它的行为与原始的一样,您可以编写测试,向您的和标准的实现添加元素,然后做一些更多的处理(删除,更改元素等),并在每一步之后检查两者是否有一致的结果。
对于UI,我不知道有什么好的开源/免费工具,但是一个好的商业工具是Smart Bear的TestComplete,在其他工具中。
对于您给出的第二个示例,第一件事是为Reflect()方法定义有效性检查。例如,您可以手动计算某些值的结果,以检查每个值的返回值是否符合预期。或者你可以用一个已知完全有效的逆函数
假设是第一个选项,您可以这样编写测试:class CRC32Test : public CppUnit::TestCase
{
public:
CRC32Test( std::string name ) : CppUnit::TestCase( name ) {}
void runTest()
{
struct Sample {unsigned long ulReflect; char cChar; unsigned long result};
static Sample samples[] =
{
// Put here the pre-calculated values
};
int count = sizeof(samples) / sizeof(Sample);
for (int i = 0; i < count; ++i)
CPPUNIT_ASSERT(subject.Reflect(samples[i].ulReflect, samples[i].cChar) == samples[i].result);
}
private:
CRC32 subject;
};
int main(void)
{
CppUnit::TextUi::TestRunner runner;
runner.addTest(new CppUnit::TestCaller<CRC32Test>("test CRC32", &CRC32::runTest));
runner.run();
}
相关文章:
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 在 CppUnit 中测试中止断言失败
- CppUnit 测试与 Qt 5.9 一起挂起
- cppUnit:针对多个测试方法执行一次的设置函数
- CPPUNIT:我们真的每个测试需要一个功能吗?
- 如何启动CPPUNIT测试
- 使用单元测试 (cppunit) 中另一个文件中定义的结构时出错
- CPPUNIT创建一个简单的测试
- 了解cppUnit测试
- CPPUNIT:公共基础测试
- 在谷歌测试或cppunit下移动参数化测试
- Netbeans Cpp编译和运行项目,但不能使用cppunit进行测试
- 如何使用cppunit显示测试方法名称
- 如何编写CPPUnit测试
- 在现有项目中创建CPPUnit测试需要哪些.cpp和.h文件
- CppUnit,很简单的测试代码崩溃了,为什么
- 第一个CppUnit测试:对CppUnit::SourceLine::SourceLine的未定义引用
- cppUnit在启动每个单元测试时是否使用fork() ?
- 用CppUnit测试静态函数
- 单元测试vc++ MFC应用程序使用CPPUNIT或GTEST