2015-03-28 3 views
0

Когда я пытаюсь ссылаться на enum class из тестового прибора, он не компилируется с ошибкой ./gtest_mcp23s17.cpp:25:52: error: no type named 'HW_ADDR_6' in 'mcp23s17::HardwareAddress' TC_mcp23s17 _gpio_x(mcp23s17::HardwareAddress::HW_ADDR_6); ~~~~~~~~~~~~~~~~~~~~~~~~~~~^GoogleTest 1.7.0 `перечисление class` ошибка компиляции

Однако, если я оставлю ссылку на самом тесте (выезда ВСЕ другой код нетронутый), он компилируется без ошибок и запускает тест, как и следовало ожидать. Является ли это ошибкой в ​​GoogleTest или что отличает этот сценарий от теста?

Тест(родовое) : [компилирует]

TEST(Construction, WHENObjectIsConstructedTHENAddressParameterIsStored) { 
    TC_mcp23s17 gpio_x(mcp23s17::HardwareAddress::HW_ADDR_6); 
    EXPECT_EQ(0x4C, gpio_x.getSpiBusAddress()); 
} 

Тест Крепеж: [компилирует]

TEST_F(SPITransfer, WHENPinModeHasNotBeenCalledTHENTheCallersChipSelectPinIsHigh) { 
    TC_mcp23s17 gpio_x(mcp23s17::HardwareAddress::HW_ADDR_6); 
    EXPECT_EQ(HIGH, getPinLatchValue(SS)); 
} 

испытательной арматуре(с gpio_x объявлен в класс приспособления) : [FAILS]

class SPITransfer : public ::testing::Test { 
    protected: 
    TC_mcp23s17 gpio_x(mcp23s17::HardwareAddress::HW_ADDR_6); 
    ... 
} 
TEST_F(SPITransfer, WHENPinModeHasNotBeenCalledTHENTheCallersChipSelectPinIsHigh) { 
    EXPECT_EQ(HIGH, getPinLatchValue(SS)); 
} 

ответ

0

Член класса может быть инициализированы только с = или {}, а не (). Поэтому любые из них должен работать:

TC_mcp23s17 gpio_x=mcp23s17::HardwareAddress::HW_ADDR_6; 
TC_mcp23s17 gpio_x{mcp23s17::HardwareAddress::HW_ADDR_6}; 

Сообщение бесполезных ошибок, потому что компилятор интерпретирует использование () для обозначения объявления функции, то путается, потому что вещь внутри скобок не является тип.

+0

Ничего себе, я чувствую себя супер немым. Однако теперь, когда я исправил это, он не отображает мои тесты. Я все еще получаю правильный код успеха/ошибки после вызова набора тестов. Есть идеи об этом? – Zak

+0

@ Zak: Я не знаю, как работает Google Test. Если у вас есть другой вопрос, задайте другой вопрос. –