gpt4 book ai didi

c++ - 测试适用于成员变量的成员函数

转载 作者:行者123 更新时间:2023-11-28 01:20:29 25 4
gpt4 key购买 nike

我有一个类 Addition 下面给出

class Addition 
{
private:
int x;
int y;
public:
Addition(int a, int b)
{
x = a;
y = b;
};
int AddtwoValues()
{
return (x + y);
}
};

测试函数AddtwoValues

#include <limits.h>
#include "gtest/gtest.h"
#include "Addition.h"

class AdditionTest : public ::testing::Test {
protected:
virtual void SetUp() {
}

virtual void TearDown() {

}
};

TEST_F(AdditionTest,twoValues){
Addition addition(5,4);
EXPECT_EQ(9,addition.AddtwoValues());
EXPECT_EQ(5,addition.AddtwoValues());
}

以上是测试函数 AddtwoValues() 的可接受方法吗?我的问题是,因为 AddtwoValues() 的参数是 class Addition 的成员函数,所以 AddtwoValues() 应该被参数化吗?这是一个好的编码习惯吗?特别是如果成员变量比两个整数更复杂。

最佳答案

不用讨论,为什么您要编写一个类来添加两个值,您的 Addition 类那样是无效的。成员函数 AddTwoValues 被声明为静态的,这意味着它在类级别上运行,而不是在每个对象上运行。因此,您无权访问两个非静态成员 xy,它们被声明为非静态的,因此存在于您创建的每个对象中。像这样更改您的代码:

class Addition 
{
private:
int x;
int y;
public:
public Addition(int a, int b)
{
x = a;
y = b;
}

int AddtwoValues()
{
return x + y;
}
};

你应该没事的。有关 static 成员的所有详细信息,请参见此处: https://en.cppreference.com/w/cpp/language/static

关于“best-practice”:对于一个相当琐碎的任务,这么小的例子,很难说,原则上它没有错,包括测试。

关于c++ - 测试适用于成员变量的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56519393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com