Можете ли вы проверить успех/неудачу SetUp в Google Test?

Есть ли способ проверить, что код SetUp действительно работал правильно в оснастках GTest, так что весь прибор или тестовое приложение можно пометить как сбой, а не получить странные результаты теста и/или явно проверить это в каждом тест?

Ответ 1

Если вы установили код установки вашего прибора в метод SetUp, и он не работает и выдает фатальный сбой (ASSERT_XXX или FAIL макросы), Google Test не будет запускать ваш тестовый объект. Итак, все, что вам нужно написать, это

class MyTestCase : public testing::Test {
 protected:
  bool InitMyTestData() { ... }

  virtual void SetUp() {
    ASSERT_TRUE(InitMyTestData());
  }
};

TEST_F(MyTestCase, Foo) { ... }

Тогда MyTestCase.Foo не будет выполняться, если InitMyTestData() возвращает false. Если у вас уже есть нефатальные утверждения в вашем установочном коде (т.е. EXPECT_XXX или ADD_FAILURE), вы можете генерировать фатальное утверждение из них, написав ASSERT_FALSE(HasFailure());. Вы можете найти больше информации об обнаружении сбоев в тесте Google расширенное руководство wiki page.