gpt4 book ai didi

C++单元测试测试,使用模板测试类

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:16 25 4
gpt4 key购买 nike

我正在做一些 C++ 测试驱动开发。我有一组类做同样的事情,例如

相同的输入给出相同的输出(或者应该,这就是我要测试的)。我正在使用 Visual Studio 2012 的

CppUnitTest 框架。我想创建一个模板化测试类,所以我只编写了一次测试,并且可以根据需要在类中进行模板化,但是我找不到这样做的方法。我的目标:

/* two classes that do the same thing */
class Class1
{
int method()
{
return 1;
}
};

class Class2
{
int method()
{
return 1;
}
};

/* one set of tests for all classes */
template< class T>
TEST_CLASS(BaseTestClass)
{
TEST_METHOD(testMethod)
{
T obj;

Assert::AreEqual( 1, obj.method());
}
};

/* only have to write small amout to test new class */
class TestClass1 : BaseTestClass<Class1>
{
};

class TestClass2 : BaseTestClass<Class1>
{
};

有没有一种方法可以使用 CppUnitTestFramework 来做到这一点?

有没有其他单元测试框架可以让我这样做?

最佳答案

我不知道是否有办法用 CppUnitTestFramework 做到这一点,我不熟悉,但你肯定可以在 googletest 中做指定任意类列表并具有框架为所有这些生成(模板方式)相同的测试。我觉得符合您的要求。

您可以下载 googletest 作为源 here .

你想要的成语是:

typedef ::testing::Types</* List of types to test */> MyTypes;
...
TYPED_TEST_CASE(FooTest, MyTypes);
...
TYPED_TEST(FooTest, DoesBlah) {
/* Here TypeParam is instantiated for each of the types
in MyTypes. If there are N types you get N tests.
*/
// ...test code
}

TYPED_TEST(FooTest, DoesSomethingElse) {
// ...test code
}

研究 primersamples .然后去AdvancedGuide对于Typed Tests

另请查看 More Assertions

关于C++单元测试测试,使用模板测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17441677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com