我正在将Google测试转换为Visual Studio Native单元测试。我遇到的问题是Visual Studio单元测试没有看到它的朋友类的变量。知道如何解决这个问题吗?
在我的VSUT-Br.cpp类中(从Google单元测试移植):
#include "DocFriendClass.h
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace VSUTBr
{
TEST_CLASS(BrTest)
{
public:
protected:
virtual ~BrTest();
virtual void SetUp();
virtual void TearDown();
std::unique_ptr<DocFriendClass> TestDoc;
...
TEST_METHOD_INITIALIZE(File_Initialize)
{
pP = CreateP();
TestDoc = std::make_unique<DocFriendClass>(OurString("Test"));
TestDoc->m_Parser.setParser(pP); //it can't see m_Parser either
...
OurString sColor(kszColor);//it's not seeing kszColor in friend
}
};
}
在我的DocFriendClass.h中:
...
private:
Parser m_Parser;
...
#ifdef UNIT_TEST
friend class BrTest;
#endif
然后我去了我的VSUT-Br项目并右键单击并选择了属性,并编辑了C / C ++预处理器设置;预处理器定义现在包括UNIT_TEST = 1。我清理内置,它仍然找不到朋友变量。我退出了VS并重新进入,并且清理了内置并且它没有找到朋友变量。它是旧谷歌测试的朋友。有什么想法吗?
我看了unit test friend,但这不是同一个问题。我在其他地方找到了,他们说我的VS单元测试中没有朋友,但我觉得这是互联网垃圾(现在找不到链接)。
更新:我在DocFriendClass中的一个变量m_Parser中添加了一些它没有看到的信息。错误信息:
C2248 'DocFriendClass::m_Parser': cannot access private member declared in class 'DocFriendClass'. File VSUT-Br.
它应该能够访问它。 Google测试可以作为朋友。
答案 0 :(得分:0)
我们通过制作我们公开访问的私有变量来解决这个问题。然后它不再需要成为朋友了。 (他们只是分享得很好)