0

在 NUnit 中,TestFixtureSetup 属性可用于标记应在夹具中的任何测试之前执行一次的方法。

CppUnit中有类似的概念吗?

如果没有,是否有支持此概念的 C++ 单元测试框架?

根据下面的答案,这是一个完成此操作的示例(遵循问题答案的建议):

// Only one instance of this class is created.
class ExpensiveObjectCreator
{
public:
    const ExpensiveObject& get_expensive_object() const
    {
        return expensive;
    }

private:
    ExpensiveObject expensive;
};

class TestFoo: public CppUnit::TestFixture
{
    CPPUNIT_TEST_SUITE(TestFoo);
    CPPUNIT_TEST(FooShouldDoBar);
    CPPUNIT_TEST(FooShouldDoFoo);
    CPPUNIT_TEST_SUITE_END();

public:
    TestFoo()
    {
        // This is called once for each test
    }

    void setUp()
    {
        // This is called once for each test
    }

    void FooShouldDoBar()
    {
        ExpensiveObject expensive = get_expensive_object();
    }

    void FooShouldDoFoo()
    {
        ExpensiveObject expensive = get_expensive_object();
    }

private:
    const ExpensiveObject& get_expensive_object()
    {
        static ExpensiveObjectCreator expensive_object_creator;
        return expensive_object_creator.get_expensive_object();
    }
};
4

1 回答 1

0

由于您不能使用夹具构造函数,这意味着 CPPUnit 每次测试都使用实例。我认为你必须有一个方法和一个静态布尔标志,它被多次读取并且只在第一次写入。然后在构造函数中调用它。

于 2010-07-02T03:16:19.637 回答