我正在將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測試可以作爲朋友。
當你聲明你的朋友類時,你如何解釋命名空間'VSUTBr'? – Arkadiy
我想我們需要在'DocFriendClass.h'中看到'kszColor'的聲明和其他的東西,但是,你不應該*用你的代碼感染測試代碼的細節。 – quamrana
「Visual Studio單元測試沒有看到變量」報告問題時,報告實際觀察的內容而非結論是非常重要的。如果有錯誤消息,請複製並粘貼它們。 「單元測試看不到變量」不包含相同的信息。 –