Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

Google C++ Testing Framework (Google Test) — библиотека для модульного тестирования (англ. unit testing) на языке C++. Исходные тексты открыты с середины 2008 года[1] под лицензией BSD. Документация частично переведена на русский язык.[2].

Google Test построена на методологии тестирования xUnit, то есть когда отдельные части программы (классы, функции, модули) проверяются отдельно друг от друга, в изоляции. Библиотека сама по себе разработана с активным применением тестирования, когда при добавлении каких-либо частей в официальную версию, кроме кода самих изменений необходимо написать набор тестов, подтверждающих их корректность.

Основные особенности

  • Минимальной единицей тестирования является одиночный тест. Тесты не требуется отдельно регистрировать для запуска. Каждый объявленный в программе тест автоматически будет запущен.
  • Тесты объединяются в группы (наборы). Полное имя теста формируется из имени группы и собственного имени теста.
  • Тесты могут использовать тестовые классы (англ. test fixture)[3], что позволяет создавать и повторно использовать одну и ту же конфигурацию объектов для нескольких различных тестов.
  • Разработчики утверждают[4], что библиотека является безопасной для многопоточного использования, замечая при этом, что для использования утверждений в разных потоках одновременно необходимо самостоятельно разработать примитивы синхронизации.
  • В состав библиотеки входит специальный скрипт, который упаковывает её исходные тексты всего в два файла: gtest-all.cc и gtest.h. Эти файлы могут быть включены в состав проекта без каких-либо дополнительных усилий по предварительной сборке библиотеки.

Поддерживаемые платформы

Официально Google Test поддерживает Linux, Windows и Mac. Для этих платформ библиотека предоставляет все необходимые скрипты для сборки. Однако, Google Test также работает на AIX, HP-UX, Solaris, Tru64, zSeries и множестве других систем. Для официально не поддерживаемых платформ разработчик должен самостоятельно скомпилировать Google Test.

Пример тестирования свободной функции

Например, имеется функция, возвращающая целое:

 int Factorial(int n); // Вернуть факториал n

Тест для этой функции может быть таким:

 // Проверить факториал от 0.
 TEST(FactorialTest, HandlesZeroInput) {
   EXPECT_EQ(1, Factorial(0));
 }
 
 // Проверить факториал некоторых положительных значений.
 TEST(FactorialTest, HandlesPositiveInput) {
   EXPECT_EQ(1, Factorial(1));
   EXPECT_EQ(2, Factorial(2));
   EXPECT_EQ(6, Factorial(3));
   EXPECT_EQ(40320, Factorial(8));
 }

Пример тестирования класса

Тест для очереди типа FIFO с именем Queue, имеющей следующий интерфейс:

 template <typename E> // E - типа элемента.
 class Queue {
  public:
   Queue();
   void Enqueue(const E& element);
   E* Dequeue(); // Возвращает NULL, если очередь пуста.
   size_t size() const;
   ...
 };

Сначала определяется тестовый класс (англ. test fixture):

 class QueueTest : public ::testing::Test {
  protected:
   virtual void SetUp() {
     q1_.Enqueue(1);
     q2_.Enqueue(2);
     q2_.Enqueue(3);
   } 
  
   Queue<int> q0_;
   Queue<int> q1_;
   Queue<int> q2_;
 };

Теперь сам тест (макрос TEST_F() используется вместо TEST(), так как тестирующая функция должна иметь доступ к полям и методам класса):

 // Проверка инициализации очереди.
 TEST_F(QueueTest, IsEmptyInitially) {
   EXPECT_EQ(0, q0_.size());
 }
 
 // Проверка извлечения элемента из очереди.
 TEST_F(QueueTest, DequeueWorks) {
   int* n = q0_.Dequeue();
   EXPECT_EQ(NULL, n);
     
   n = q1_.Dequeue();
   ASSERT_TRUE(n != NULL);
   EXPECT_EQ(1, *n);
   EXPECT_EQ(0, q1_.size());
   delete n;
 
   n = q2_.Dequeue();
   ASSERT_TRUE(n != NULL);
   EXPECT_EQ(2, *n);
   EXPECT_EQ(1, q2_.size());
   delete n;
 }

В Google Test есть два основных типа проверок (утверждений) —- ASSERT_* и EXPECT_*. Если используется EXPECT_*, то в случае сбоя тест продолжит работу, хотя сбой будет зарегистрирован, и тест в любом случае считается неуспешным. Если же продолжение теста бессмысленно, используется ASSERT_*. Данная проверка прерывает работу теста в случае несрабатывания проверки.

Дополнительные возможности

Библиотека Google Test тесно связана с библиотекой Google Mock, позволяющей тестировать взаимодействие вашего класса с другими. С помощью этой библиотеки вы сможете убедиться в том, что ваш класс вызывает методы других объектов[5], а также проверить, что эти методы вызываются с нужными значениями параметров[6], нужное количество раз[7], в нужном порядке[8].

Примечания

  1. Google Testing Blog: Announcing: New Google C++ Testing Framework. Дата обращения: 16 июля 2009. Архивировано 5 апреля 2009 года.
  2. googletest-translations — Project Hosting on Google Code. Дата обращения: 28 апреля 2022. Архивировано 28 апреля 2022 года.
  3. Test Fixtures: Using the Same Data Configuration for Multiple Tests - Google Test Primer. Дата обращения: 25 апреля 2016. Архивировано из оригинала 5 апреля 2016 года.
  4. Known Limitations - Google Test Primer. Дата обращения: 25 апреля 2016. Архивировано из оригинала 5 апреля 2016 года.
  5. General Syntax - Google C++ Mocking Framework for dummies. Дата обращения: 25 апреля 2016. Архивировано 8 февраля 2016 года.
  6. Matchers: What Arguments Do We Expect? - Google C++ Mocking Framework for dummies. Дата обращения: 25 апреля 2016. Архивировано 8 февраля 2016 года.
  7. Cardinalities: How Many Times Will It Be Called? - Google C++ Mocking Framework for dummies. Дата обращения: 25 апреля 2016. Архивировано 8 февраля 2016 года.
  8. Ordered vs Unordered Calls - Google C++ Mocking Framework for dummies. Дата обращения: 25 апреля 2016. Архивировано 8 февраля 2016 года.

Ссылки

Эта страница в последний раз была отредактирована 26 августа 2023 в 12:16.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).