C++ 如何使用google测试框架测试void方法

C++ 如何使用google测试框架测试void方法,c++,googletest,C++,Googletest,示例:我有一个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;

示例:我有一个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;
}

为了在本例中正确测试该方法,我将向该方法注入流:

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());
}

依赖注入是这里的选项之一,并且被广泛接受。由于默认参数,调用方不必更改任何内容。

在本例中,要正确测试方法,我将向方法注入流:

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());
}

依赖注入是这里的选项之一,并且被广泛接受。由于默认参数,调用方不必更改任何内容。

arr[]的定义在哪里?而不是测试只打印到std::cout的函数,该函数应该可以工作,否则,您的系统会一团糟,我建议您创建一个测试函数,测试数组或向量中的值,以确保它们是预期值。@RohanBari“arr[]”定义为“包含无效打印编号;int-arr[10];int main{int i;int check;int value=0;fori=0;iarr[i]在分配单个元素之前被直接使用。结果将是意外的。请将您的问题包括在内。arr[]的定义在哪里?我建议您创建一个测试函数,测试数组或向量中的值,以确保它们符合预期。@RohanBari“arr[]”定义为“include void printNumber;int arr[10];int main{int i;int check;int value=0;fori=0;iarr[i]在分配单个元素之前被直接使用。结果将是意外的。请将您的问题包括在内。