加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:05:01 所属栏目:百科 来源:网络整理
导读:我正在做一些C测试驱动的开发.我有一组类做同样的事情,例如 相同的输入给出相同的输出(或应该,这是我试图测试).我正在使用Visual Studio 2012 CppUnitTestFramework.我想创建一个模板化的测试类,所以我编写了一次测试,并且可以根据需要在类中进行模板,但是我
我正在做一些C测试驱动的开发.我有一组类做同样的事情,例如

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

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

/* 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
}

研究primer和
samples.然后去
AdvancedGuide
为Typed Tests

另请查看More Assertions

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读