Google C++ Testing Framework

Google C++ Testing Framework

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

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

Содержание

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

  • Минимальной единицей тестирования является одиночный тест. Тесты не требуется отдельно регистрировать для запуска. Каждый объявленный в программе тест автоматически будет запущен.
  • Тесты объединяются в группы (наборы). Полное имя теста формируется из имени группы и собственного имени теста.
  • Тесты могут использовать общие данные (англ. test fixture), что позволяет логически объединять тесты и создавать универсальную среду для тестирования всего модуля или класса.
  • Библиотека является безопасной для многопотокового использования, хотя сами разработчики дают конкретные рекомендации, как правильно ее использовать в программах, работающих в нескольких потоках.
  • В состав библиотеки входит специальный скрипт, который упаковывает её всего в два файла: 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);
   } 
 
   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. Библиотека Google Mock позволяет не просто делать тестовые проверки, а задавать ожидаемое поведение программы в виде специальных команд, что значительно упрощает и ускоряет написание тестов.

Примечания

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Google C++ Testing Framework" в других словарях:

  • Spring Framework — Infobox Software name = Spring Framework caption = developer = [http://www.springsource.com SpringSource] latest release version = 2.5.5 latest release date = release date|2008|06|23 latest preview version = latest preview date = operating system …   Wikipedia

  • Zend Framework — Тип Программный каркас для создания веб приложений Разработчик Zend Technologies Операционная система Кроссплатформенное программное обеспечение Последняя версия …   Википедия

  • Django (web framework) — Django The default Django page Developer(s) Lawrence Jou …   Wikipedia

  • OWASP Mantra Security Framework — OWASP Mantra Security Framework …   Wikipedia

  • Pylons (web framework) — Infobox Software name = Pylons latest release version = 0.9.6.2 latest release date = May 28, 2008 genre = Web application framework license = BSD License programming language = Python operating system = Cross platform website =… …   Wikipedia

  • Zend Framework — Infobox Software name = Zend Framework latest release version = [http://framework.zend.com/download 1.6.1] latest release date = release date|2008|09|02 operating system = Cross platform license = New BSD license developer = Zend Technologies… …   Wikipedia

  • List of Google products — This page is a summary of services and tools provided by Google Inc. For other uses, see Google (disambiguation). This list of Google products includes all major desktop, mobile and online products released or acquired by Google Inc.. They are… …   Wikipedia

  • Statistical hypothesis testing — This article is about frequentist hypothesis testing which is taught in introductory statistics. For Bayesian hypothesis testing, see Bayesian inference. A statistical hypothesis test is a method of making decisions using data, whether from a… …   Wikipedia

  • Spring (Framework) — Spring Maintainer SpringSource Aktuelle Version 3.0.6[1] (23. August 2011) …   Deutsch Wikipedia

  • Brück aerial testing facility — The Brück aerial testing facility is a facility for testing aerials at Brück, south of Berlin. It was established in 1939.On the Brück aerial testing facility there are two 54 metre high wood framework towers built in 1963, made without any… …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»