У меня есть еще один тест, где я делаю следующее, и он отлично работает:
TEST(TEST1, TestName)
{
ClassName env;
const String original = env(Con::WorkingDir);
Con c = env;
}
Однако я хочу, чтобы это было установлено для другого класса 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;
}
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.
Других решений пока нет …