Google-Test für Klassen

Weiteres Beispiel für Tests der My3Vector Klasse


#include <cmath>
#include <iostream>

#include "gtest/gtest.h"  // googletest includes

#include "My3Vector.h"

int main(int argc, char* argv[])
{
  testing::InitGoogleTest(&argc, argv); // initialize Google Test Framework
  return RUN_ALL_TESTS();
}

TEST(My3Vector, Basics) // define test ( name, sub-name )
{
  My3Vector a;
  EXPECT_EQ( 0, a.Length() ); 
  My3Vector b(3., 4., 0.);
  EXPECT_EQ( 5, b.Length() );
}

TEST(My3Vector, SkalarProdukt) // define test ( name, sub-name )
{
  My3Vector a(1.,1.,1.);
  ASSERT_EQ( 3., a.Dot(a));
  My3Vector b(1.,-1.,0.);
  ASSERT_EQ( 0., a.Dot(b));
}


Neben dem einfachen TEST() Makro kann man in Google Test auch Test Fixtures TEST_F() verwenden. Das erlaubt komplexeren Setup und Initialisierung einer Testumgebung, siehe Test Fixtures.

Wie schon diskutiert sollten Tests nicht nur als nachträgliche Ergänzung verwendet werden sondern im Sinne von TDD von vorneherein in die Entwicklung integriert sein. Die Tests werden zusammen mit der eigentlichen Implementierung erstellt (oder sogar vorab).




GDuckeck 2019-08-01