Метод класса Google Test не может получить доступ к частному члену пользовательского класса (тестируемого класса)C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Метод класса Google Test не может получить доступ к частному члену пользовательского класса (тестируемого класса)

Сообщение Anonymous »

Мне хотелось бы, чтобы метод тестовой фиксации utFooFixture::utMethod1 имел доступ к частному члену Foo::m_fooProc.
Я выполнил инструкции и еще один совет по переполнению стека, чтобы объявить utFooFixture другом с помощью макроса FRIEND_TEST, но я все равно получаю ошибку доступа внутри utMethod1. Почему это происходит?
Предполагается, что доступ должен быть включен путем определения директивы препроцессора UNITTESTS, которую я сделал для проекта, содержащего Foo.h, и для проекта модульного тестирования, который содержит utFoo.cpp.
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;

public:
void LaunchProcess() { // Uses m_fooProc to run a windows app }
void TerminateProcess() { // Uses m_fooProc to close a windows app }

#ifdef UNITTESTS
public:
FRIEND_TEST(utFooFixture , FooStartsAndClosesProcess); // 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() {}

bool utMethod1(Foo &foo)
{
// Call Foo's public interface
foo.LaunchProcess();

DWORD status;
GetExitCodeProcess(foo.m_fooProc.hProcess, &status); // "Error: Foo::m_fooProc is inaccessible"

// Process launched successfully
if (status == 0) {
return true;
}

return false;
}
};

TEST_F(utFooFixture, FooStartsAndClosesProcess)
{
Foo f1;
bool launchWasSuccessful = utMethod1(f1);
ASSERT_EQ(launchWasSuccessful , true);
}
Изображение


Подробнее здесь: https://stackoverflow.com/questions/793 ... e-class-un
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»