Примечание. Я определил директиву препроцессора UNITTESTS для проекта, содержащего Foo.h, и для проекта модульного теста, содержащего utFoo.cpp.
Мне нужна тестовая установка метод utFooFixture::utMethod1 для доступа к частному члену Foo::m_fooProc.
Я следовал инструкциям и некоторым другим советам по переполнению стека объявить utFooFixture другом с помощью макроса FRIEND_TEST, но я все равно получаю ошибку доступа внутри utMethod1. Почему это происходит?
Foo.h
#ifdef UNITTESTS
#include
#endif
#include // PROCESS_INFORMATION
class Foo
{
// Private member the unit test `utFooFixture::utMethod1` method needs to access
PROCESS_INFORMATION m_fooProc;
#ifdef UNITTESTS
public:
FRIEND_TEST(utFooFixture , testMethod1); // VS Warns "VCR001: Function definition for 'FRIEND TEST' not found".
#endif
};
utFoo.cpp
#include "gtest/gtest.h"
#include "Foo.h"
class utFooFixture : public testing::Test
{
public:
void SetUp() {...}
void TearDown() {}
std::string utMethod1(Foo &foo)
{
DWORD status;
GetExitCodeProcess(foo.m_fooProc, &status); // "Error: Foo::m_fooProc is inaccessible"
}
};
TEST_F(utFooFixture, testMethod1)
{
Foo f1;
utMethod1(f1);
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... e-class-un
Метод класса Google Test не может получить доступ к частному члену пользовательского класса (тестируемого класса) ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение