单元测试无法看到友元类变量

时间:2016-06-09 15:10:51

标签: c++11 visual-studio-2015

我正在将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测试可以作为朋友。

1 个答案:

答案 0 :(得分:0)

我们通过制作我们公开访问的私有变量来解决这个问题。然后它不再需要成为朋友了。 (他们只是分享得很好)