使用 GoogleTest 访问私有成员
Accessing private members with GoogleTest
我在添加好友以访问私人成员时遇到问题。这是我的代码。
#pragma once
#ifndef TEST_FRIENDS
#define TEST_FRIENDS
#endif
namespace LibToTestNamespace
{
class LibToTest
{
public:
double Add(double, double);
private:
TEST_FRIENDS;
int GetMyInt();
int mInt;
};
}
和
#include "UnitTests.h"
#define TEST_FRIENDS \
friend class TestCustomUnitTest_hello_Test;
#include "LibToTest.h"
TEST(TestCustomUnitTest, hello)
{
LibToTestNamespace::LibToTest ltt;
ltt.mInt = 5;
ltt.GetMyInt();
}
我收到错误 "cannot access private member declared in class"。我在想首先构建 lib,所以 TEST_FRIENDS 没有被正确替换?但是如果单元测试依赖于库,它总是会先构建,对吗?
我通过将我的单元测试 class 包装在我的产品 class 所在的同一个命名空间中来实现它。
namespace LibToTestNamespace
{
TEST(TestCustomUnitTest, hello)
{
LibToTest ltt;
ltt.mInt = 5;
ltt.GetMyInt();
}
}
我在添加好友以访问私人成员时遇到问题。这是我的代码。
#pragma once
#ifndef TEST_FRIENDS
#define TEST_FRIENDS
#endif
namespace LibToTestNamespace
{
class LibToTest
{
public:
double Add(double, double);
private:
TEST_FRIENDS;
int GetMyInt();
int mInt;
};
}
和
#include "UnitTests.h"
#define TEST_FRIENDS \
friend class TestCustomUnitTest_hello_Test;
#include "LibToTest.h"
TEST(TestCustomUnitTest, hello)
{
LibToTestNamespace::LibToTest ltt;
ltt.mInt = 5;
ltt.GetMyInt();
}
我收到错误 "cannot access private member declared in class"。我在想首先构建 lib,所以 TEST_FRIENDS 没有被正确替换?但是如果单元测试依赖于库,它总是会先构建,对吗?
我通过将我的单元测试 class 包装在我的产品 class 所在的同一个命名空间中来实现它。
namespace LibToTestNamespace
{
TEST(TestCustomUnitTest, hello)
{
LibToTest ltt;
ltt.mInt = 5;
ltt.GetMyInt();
}
}