Google 테스트를 Visual Studio Native unit 테스트로 변환하고 있습니다. 나는 Visual Studio unit 테스트가 그것의 변수 인 friend 클래스를 보지 못하는 문제에 직면 해있다. 이 문제를 어떻게 해결할 수 있습니까? 내 VSUT-Br.cpp 클래스에서Unit Test에서 친구 클래스 변수를 볼 수 없습니다.
(구글 단위 테스트에서 이식) :
#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 - 브롬 프로젝트에 가서 마우스 오른쪽 버튼으로 클릭하고 선택한 속성을 편집하고 C/C++ Preprocessor 설정을 편집했습니다. 전처리 기 정의에 UNIT_TEST = 1이 포함됩니다. 나는 지워졌고 그것은 여전히 친구 변수를 찾을 수 없었다. 나는 VS를 빠져 나가서 다시 들어가서 깨끗하게 지 었으며 친구 변수를 찾지 못했습니다. 이전 Google 테스트에서 친구로 사용되었습니다. 어떤 아이디어?
나는 unit test friend을 보았지만 같은 문제는 아닙니다. 나는 다른 곳에서 발견했고 그들은 내 VS Unit Test에 친구를 가질 수 없다고 말하고 있었지만 인터넷 쓰레기라는 느낌이 들었습니다 (지금 링크를 찾을 수 없습니다).
업데이트 : DocFriendClass의 변수 m_Parser에 일부 정보가 표시되지 않습니다. 오류 정보 :
C2248 'DocFriendClass::m_Parser': cannot access private member declared in class 'DocFriendClass'. File VSUT-Br.
이 정보에 액세스 할 수 있어야합니다. Google 테스트는 친구가 될 수 있습니다.
친구 클래스를 선언 할 때 네임 스페이스'VSUTBr'을 어떻게 고려합니까? – Arkadiy
우리는'kszColor'의 선언과'DocFriendClass.h'의 다른 것들을보아야한다고 생각합니다. 그렇지만 테스트 코드의 세부 사항으로 코드를 감염 시키면 안됩니다. – quamrana
"Visual Studio unit test에서 변수를 보지 못했습니다."문제를보고 할 때 결론보다는 실제로 관찰 한 내용을보고하는 것이 중요합니다. 오류 메시지가 있으면 복사하여 붙여 넣으십시오. "단위 테스트에 변수가 표시되지 않습니다"에는 동일한 정보가 포함되어 있지 않습니다. –