2016-06-09 35 views
0

我正在將Google測試轉換爲Visual Studio本機單元測試。我遇到了Visual Studio單元測試沒有看到它的朋友類的變量的問題。任何想法如何解決這個問題?單元測試看不到朋友類變量

在我VSUT-Br.cpp類(來自谷歌的單元測試移植):

#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並回到了內部,並且清理完成,並且沒有找到好友變量。它將Google作爲舊測試的朋友。有任何想法嗎?我看着unit test friend但它不是同一個問題。我在其他地方發現,他們說我不能有我的VS單元測試的朋友,但我有一種感覺是互聯網垃圾(現在找不到鏈接)。

更新:我在DocFriendClass中的一個變量m_Parser上添加了一些信息,它沒有看到。錯誤信息:

C2248 'DocFriendClass::m_Parser': cannot access private member declared in class 'DocFriendClass'. File VSUT-Br. 

它應該能夠訪問這個。 Google測試可以作爲朋友。

+1

當你聲明你的朋友類時,你如何解釋命名空間'VSUTBr'? – Arkadiy

+1

我想我們需要在'DocFriendClass.h'中看到'kszColor'的聲明和其他的東西,但是,你不應該*用你的代碼感染測試代碼的細節。 – quamrana

+0

「Visual Studio單元測試沒有看到變量」報告問題時,報告實際觀察的內容而非結論是非常重要的。如果有錯誤消息,請複製並粘貼它們。 「單元測試看不到變量」不包含相同的信息。 –

回答

0

我們通過使我們訪問的私有變量公開,解決了這個問題。然後它不再需要成爲朋友。 (他們剛分享)