Соединение с практическими рекомендациями TDD и RAII

Я пытаюсь сделать обширные тесты для своего нового проекта, но у меня есть проблема.

В основном я хочу протестировать MyClass. MyClass использует несколько других классов, которые я не делаю их задания в целях теста. Таким образом, я создал насмешки (я использую gtest и gmock для тестирования),

Но MyClass инстанцируют всего, в чем это нуждается, он - конструктор, и выпустите его в деструкторе. Это - RAII, я думаю.

Таким образом, я думал, я должен создать некоторую фабрику, которая создает все и дает его конструктору MyClass. Та фабрика могла иметь, это - фальшивка для тестирования. But это больше не право RAII?

Затем что проку решение здесь?

1
задан f4. 15 June 2010 в 20:24
поделиться

1 ответ

Вы издеваетесь над ним так же, как над любым другим классом. Попросите конструктора класса RAII позаботиться об этом.

class MyInterface
{
    virtual void MyApiFunction(int myArg)
    {
        ::MyApiFunction(myArg);
    }
};

class MyRAII : boost::noncopyable //Shouldn't be copying RAII classes, right?
{
    MyInterface *api;
public:
    MyRAII(MyInterface *method = new MyInterface)
    : api(method)
    {
        //Aquire resource
    }
    ~MyRAII()
    {
        //Release resource
        delete api;
    }
};

class MockInterface : public MyInterface
{
    MOCK_METHOD1(MyApiFunction, void(int));
};

TEST(Hello, Hello)
{
    std::auto_ptr<MockInterface> mock(new MockInterface);
    EXPECT_CALL(*mock, ....)...;
    MyRAII unitUnderTest(mock.release());
}
2
ответ дан 2 September 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: