Hej, korzystam z biblioteki gmock i zastanawiam się czy da się przetestować działanie settera nie wywołując jego kodu w teście? Czy mockowane metody nie robią zupełnie nic? Zamieszczam prosty program, który ilustruje moją nieudaną próbę.
vector.h
#ifndef VECTOR_H_
#define VECTOR_H_
class Vector
{
private:
double x;
double y;
public:
virtual void setX(double a) {x = a;}
virtual void setY(double b) {y = b;}
virtual double getX() const {return x;}
virtual double getY() const {return y;}
virtual ~Vector() {}
};
#endif
vectorMock.h
#ifndef INCLUDE_VECTORMOCK_H_
#define INCLUDE_VECTORMOCK_H_
#include "gmock/gmock.h"
#include "vector.h"
class VectorMock : public Vector
{
public:
MOCK_METHOD1(setX, void(double a));
MOCK_METHOD1(setY, void(double b));
MOCK_CONST_METHOD0(getX, double());
MOCK_CONST_METHOD0(getY, double());
};
#endif
testVector.cpp
#include "gtest/gtest.h"
#include "gmock/gmock.h"
#include "vector.h"
#include "vectorMock.h"
#include <iostream>
TEST(SetterAndGetterTest, test1)
{
VectorMock m_VectorMock;
m_VectorMock.setX(10);
m_VectorMock.setY(20);
EXPECT_EQ(10,m_VectorMock.getX());
EXPECT_EQ(20,m_VectorMock.getY());
}