
21 May 2024 Leave a comment Tech-Help
Integrating Google Test into a project that uses Autotools can be a challenging task. This guide provides a step-by-step approach to seamlessly compile and run your tests using Google Test within an Autotools environment.
The First Problem: Compiling Google Test as a Library
To compile Google Test as a library that your test code can link against, follow these steps:
-
Download Google Test and place it into your project. Using Git, add Google Test as a submodule:
$ git submodule add [email protected]:google/googletest.git $ git submodule init $ git submodule update
-
Update your project structure to include the Google Test directories:
/: Makefile.am configure.ac src/: (files for your project) tests/: (test files) googletest/: googletest/: include/: (headers, etc.) src/: (source files for Google Test) m4/: (m4 scripts)
-
Modify your
tests/Makefile.am
to compile the Google Test library only when runningmake check
:check_LTLIBRARIES = libgtest.la libgtest_la_SOURCES = ../googletest/googletest/src/gtest-all.cc libgtest_la_CPPFLAGS = -I$(top_srcdir)/googletest/googletest/include -I$(top_srcdir)/googletest/googletest libgtest_la_LDFLAGS = -pthread
-
Enable subdir-objects and other necessary configurations in
configure.ac
:AM_INIT_AUTOMAKE([-Wall -Werror subdir-objects]) ... AM_PROG_AR LT_INIT AC_CONFIG_MACRO_DIRS([m4]) ... AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile ])
-
Include the macro directory and subdirectories in
Makefile.am
:ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src tests
The Second Problem: Creating and Running Tests
Once Google Test is compiled, the next step is to create and run tests that link to the Google Test libraries. Follow these instructions:
-
Create a test file, for example,
gtest.cpp
in yourtests
directory:#include "gtest/gtest.h" TEST(CategoryTest, SpecificTest) { ASSERT_EQ(0, 0); } int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
-
Update
tests/Makefile.am
to compile and run the test:check_PROGRAMS = gtest gtest_SOURCES = gtest.cpp gtest_LDADD = libgtest.la gtest_LDFLAGS = -pthread gtest_CPPFLAGS = -I$(top_srcdir)/googletest/googletest/include -I$(top_srcdir)/googletest/googletest TESTS = gtest
Run autoreconf -fiv
from your project root, then use make check
to compile and run your tests.
Using Repeato for Automated Testing
If you are looking for a more streamlined and efficient way to create, run, and maintain your automated tests, consider using Repeato. Repeato is a no-code test automation tool for iOS and Android that leverages computer vision and AI to simplify the testing process. It offers an intuitive test recorder for beginners and a scripting interface for advanced users, making it versatile for various testing needs. Repeato also allows testing websites inside an Android emulator or device, with explicit web testing support coming soon.
Like this article? there’s more where that came from!
- Resolving the “xcrun: error: invalid active developer path” Error on macOS
- Adding Existing Frameworks in Xcode 4: A Comprehensive Guide
- Disabling ARC for a Single File in Xcode: A Step-by-Step Guide
- Resolving the Xcode-Select Active Developer Directory Error
- Resolving the “Multiple Commands Produce” Error in Xcode 10