gtest setup teardown TestEnvironment - проблема с переменной класса

У меня есть еще один тест, где я делаю следующее, и он отлично работает:

TEST(TEST1, TestName)
{
ClassName env;
const String original = env(Con::WorkingDir);

Con c = env;
}

Однако я хочу, чтобы это было установлено для другого класса gtest и сохранялось на протяжении всего тестового устройства. Тем не менее, я получаю это сообщение об ошибке:

Вызов объекта типа класса без соответствующего оператора или функции преобразования в указатель на тип функции.

Я смотрю на инициализацию gtest, и я не уверен, что мне не хватает для этого. Это может быть использование статических переменных, с которыми я не знаком. Я не хочу, чтобы ClassName был статичным.

Что я делаю не так с этим?

//this is intended to setup env to use in teardown.
class TestEnvironment : public ::testing::Environment {
public:
 static String getEn() {
   ClassName env;
   static const String sString = env(Con::WorkingDir);  //env has the error message here
   return sString;
 }
}

class UnitTest : public ::testing::Test
{
public:
virtual void SetUp() {
   //
}

virtual void TearDown() {
  //set env back to initial value
  getEn();
  //process env info;
}

1 ответ

Решение
class UnitTest : public ::testing::Test {  //can't use Environment here because of name conflict in our code, although that was used by static const variable setup in example link.
public:
 String orig;
}

class UnitTest : public ::testing::Test
{
public:
virtual void SetUp() {
   orig = code;
}

virtual void TearDown() {
  //process orig;
}

Оказалось, что, хотя наш код искал const-строку, нам не нужно сохранять ее как const.

Другие вопросы по тегам