Я пытаюсь сделать обширные тесты для своего нового проекта, но у меня есть проблема.
В основном я хочу протестировать MyClass. MyClass использует несколько других классов, которые я не делаю их задания в целях теста. Таким образом, я создал насмешки (я использую gtest и gmock для тестирования),
Но MyClass инстанцируют всего, в чем это нуждается, он - конструктор, и выпустите его в деструкторе. Это - RAII, я думаю.
Таким образом, я думал, я должен создать некоторую фабрику, которая создает все и дает его конструктору MyClass. Та фабрика могла иметь, это - фальшивка для тестирования. But это больше не право RAII?
Затем что проку решение здесь?
Вы издеваетесь над ним так же, как над любым другим классом. Попросите конструктора класса 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());
}