Примечание. Я определил директиву препроцессора 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;
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, &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
Метод класса Google Test не может получить доступ к частному члену пользовательского класса (тестируемого класса) ⇐ C++
Программы на C++. Форум разработчиков
1736277329
Anonymous
Примечание. Я определил директиву препроцессора UNITTESTS для проекта, содержащего Foo.h, и для проекта модульного теста, содержащего utFoo.cpp.
Мне нужна тестовая установка метод utFooFixture::utMethod1 для доступа к частному члену Foo::m_fooProc.
Я следовал инструкциям и некоторым другим советам по переполнению стека объявить utFooFixture другом с помощью макроса FRIEND_TEST, но я все равно получаю ошибку доступа внутри utMethod1. Почему это происходит?
[b]Foo.h[/b]
#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
};
[b]utFoo.cpp[/b]
#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, &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);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79336827/google-test-class-method-cant-access-private-member-of-user-class-the-class-un[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия