如何测试C++控制台程序?

问题描述 投票:0回答:1

我是 C++ 开发的新手。我对链接器和高级概念了解不多,但我是 C#、Java 和一般测试方面的专家。

我的控制台应用程序有 2 个文件:

程序.h

int Add(int x, int b);

程序.cpp

#include <iostream>

int Add(int x, int b)
{
    return x * b;
}


int main()
{
    int x = 4;
    int y = 5;

    std::cout << x << " add " << y << " is " << Add(x, y) << std::endl;
}

这个程序运行良好,但我想用 GoogleTest 测试

Add()

Visual Studio 附带 GoogleTest 项目类型,因此我创建了一个,但无法在此测试项目中#include“Program.h”。

在此输入图片描述

代码块是

#include "Program.h"

在 GoogleTest 中测试控制台程序的简单方法是什么?

我相信我可以创建指向 ConsoleApplication 文件夹中的文件的 NTFS 硬/软链接,但该技巧可能不适用于 Git,或者如果我移动解决方案。

c++ googletest
1个回答
0
投票

我实际上会稍微重构一下你的代码。由于您的屏幕截图显示了 Visual Studio,我将使用该术语

  1. 数学 - 静态库

    数学.h

    int Add(int x, int b);
    

    数学.cpp

    #include "math.h"
    
    int Add(int x, int b)
    {
        return x * b;
    }
    
  1. math_tests - 可执行

    math_tests.cc

       #include "math.h"
       #include "gtest/gtest.h"
    
       TEST(Math, Equals) {
       EXPECT_EQ(Add(2, 3), 5);
    }
    
  2. 主要 - 可执行文件

    程序.cpp

    #include "math.h"
    
    int main()
    {
        int x = 4;
        int y = 5;
    
        std::cout << x << " add " << y << " is " << Add(x, y) << std::endl;
    }
    

这样您就有了三个构建单元,每个单元都有自己的 vcxproj。

  1. math - 这是一个声明和定义数学函数的静态库
  2. math_tests - 这是一个包含 gtest main 的可执行文件,它将链接到您的
    math
    静态库
  3. main - 这包含控制台程序的主要可执行文件,它还链接到
    math
    静态库
© www.soinside.com 2019 - 2024. All rights reserved.