我如何使用 google 测试框架测试 void 方法
how can i test void method using google test framework
示例:我有一个只打印数组元素的 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 方法。
#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());
}
依赖注入是这里的选项之一,并且被广泛接受。由于默认参数,调用者无需更改任何内容。