How to setup googletest on Linux in the year 2012?

前端 未结 3 1011
孤城傲影
孤城傲影 2021-02-01 19:37

I am using Linux machine. I have download the googletest package from here

However, there is no installation guide or other blogs related on how to set it up properly Th

相关标签:
3条回答
  • 2021-02-01 20:12

    These instructions get the testing framework working for the Debug configuration.

    Get Google C++ Testing Framework

    1.Download the latest gtest framework

    2.Unzip to C:\gtest

    Build the Framework Libraries

    1.Open C:\gtest\msvc\gtest.sln in Visual Studio

    2.Set Configuration to "Debug"

    3.Build Solution

    Create and Configure Your Test Project

    1.Create a new solution and choose the template Visual C++ > Win32 > Win32 Console Application

    2.Right click the newly created project and choose Properties

    3.Change Configuration to Debug.

    4.Configuration Properties > C/C++ > General > Additional Include Directories: Add C:\gtest\include

    5.Configuration Properties > C/C++ > Code Generation > Runtime Library: If your code links to a runtime DLL, choose Multi-threaded Debug DLL (/MDd). If not, choose Multi-threaded Debug (/MTd).

    6.Configuration Properties > Linker > General > Additional Library Directories: Add C:\gtest\msvc\gtest\Debug

    7.Configuration Properties > Linker > Input > Additional Dependencies: Add gtestd.lib

    Verifying Everything Works

    1.Open the cpp in your Test Project containing the main() function.

    2.Paste the following code:

    #include "stdafx.h"
    #include <iostream>
    
    #include "gtest/gtest.h"
    
        TEST(sample_test_case, sample_test)
        {
            EXPECT_EQ(1, 1);
        }
    
        int main(int argc, char** argv) 
        { 
            testing::InitGoogleTest(&argc, argv); 
            RUN_ALL_TESTS(); 
            std::getchar(); // keep console window open until Return keystroke
        }
    

    1.Debug > Start Debugging

    If this works you should see the console window open with your test results.

    0 讨论(0)
  • 2021-02-01 20:19

    Here's what I did and you can adjust as necessary. I downloaded gtest-1.6.0.zip (from the releases page) on my Linux box into ~/Downloads which typed out fully is /home/me/Downloads/

    Unzip the contents of gtest-1.6.0.zip into ~/Downloads/gtest-1.6.0/

    cd /home/me/Downloads
    unzip gtest-1.6.0.zip
    

    Build the gtest library because it's something you need to "include" in your test executable. Compile the object file gtest-all.o:

    g++ -Igtest-1.6.0/include -Igtest-1.6.0 -c gtest-1.6.0/src/gtest-all.cc
    

    Then build the library archive libgtest.a:

    ar -rv libgtest.a gtest-all.o
    

    Now you can create your test.cc file in ~/Downloads. Here is an example test file that I used to make sure it compiles.

    #include "gtest/gtest.h"
    
    TEST(blahTest, blah1) {
        EXPECT_EQ(1, 1);
    }
    
    int main (int argc, char** argv) {
        ::testing::InitGoogleTest(&argc, argv);
    
        int returnValue;
    
        //Do whatever setup here you will need for your tests here
        //
        //
    
        returnValue =  RUN_ALL_TESTS();
    
        //Do Your teardown here if required
        //
        //
    
        return returnValue;
    }
    

    To compile your own test and run it:

    g++ -I/home/me/Downloads/gtest-1.6.0/include -pthread test.cc libgtest.a -o test_executable
    

    Then to execute it:

    ./test_executable
    

    And it should run fine. Modify as necessary from there.

    0 讨论(0)
  • 2021-02-01 20:35

    An addendum to James C's answer:

    Note that building the library using gtest-1.6.0/src/gtest-all.cc will require you to provide with a main method yourself. If you want to avoid that altogether and use the default implementation of the main method provided by Googletest, build your library including gtest_main.cc.

    That is:

    g++ -Igtest-1.6.0/include -Igtest-1.6.0 -c gtest-1.6.0/src/gtest-all.cc gtest-1.6.0/src/gtest_main.cc
                                                                                           ^^^^^^^^^^^^^^
    ar -rv libgtest_main.a gtest_main.o gtest-all.o
                           ^^^^^^^^^^^^
    

    Also, keep in mind that implementing your own main method is not the recommended way of defining the SetUp and TearDown behaviours; you should be using fixtures instead. Check the Googletest documentation on the topic.

    0 讨论(0)
提交回复
热议问题