我如何使用Google测试框架测试void方法

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

示例:我有一个void方法,它只打印数组的元素。

#include <stdio.h>

void PrintNumbers();

int arr[10];

int main(){

        int i;
        int value = 0;

        for(i = 0 ; i<10; i++)
                arr[i] = value++;

         PrintNumbers();

        return 0;
}

PrintNumbers(){

        int i;

        for(i = 0 ; i < 10 ; i++)
                cout <<"arr["<< arr[i] << "]" << endl;
}
c++ googletest
1个回答
2
投票

为了在这种情况下正确测试方法,我将流注入到方法中:

void PrintNumbers(std::ostream& os = std::cout) {
    int a = 42;
    os << "Expected " << a;
}

TEST(PrintNumbersTest, TestWithStringStream) {
    std::stringstream myStream;
    PrintNumbers(myStream);

    ASSERT_EQ("Expected 42", myStream.str());
}

依赖项注入是这里的选项之一,被广泛接受。由于使用默认参数,因此调用方无需进行任何更改。

© www.soinside.com 2019 - 2024. All rights reserved.