gpt4 book ai didi

c++ - 基本级别的单元测试

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:25 25 4
gpt4 key购买 nike

SO 中有很多关于单元测试的问题。但是我找不到的是某种基本的实现示例!

假设,我有一个 C++ 代码,除了一些复数运算外什么都不做。从技术上讲,该类将是:

class complex{
protected:
float r,i;
public:
complex(float rr=0, float ii=0):r(rr),i(ii){}

complex operator+(complex a){
return complex(r+a.r, i+a.i);
}

complex operator-(complex a){
return complex(r-a.r, i-a.i);
}

complex operator*(complex a){
return complex(r*a.r-i*a.i, r*a.i+i*a.r);
}
};

现在它的单元测试是什么?您将如何为上述类(class)编写单元测试?我是否总是需要某种单元测试框架来开始编写单元测试?简而言之,我如何开始?如果可能,请在不建议使用任何框架的情况下回答!

编辑:

感谢评论和回答。我现在所做的是创建一个单独的文件,其中仅包含我的类说 class_complex.cpp 并进行了一些编辑:

class test_complex;
class complex{.....
.....
friend class test_complex;
}

然后创建另一个名为 unittest_class_complex.cpp 的文件,其中包含代码

#include <iostream>

#include "class_complex.cpp"

/* Test Cases */
class test_complex:public complex{
public:
void pass(){
std::cout<<"Pass\n";
}
void fail(){
std::cout<<"Fail\n";
}

void test_default_values(){
std::cout<<"Default Values Test: ";
complex c1;
if(c1.r==0 && c1.i==0){
pass();
} else {
fail();
}
}

void test_value_constructor(){
std::cout<<"Non-Default Values Test: ";
complex c1(10,2);
if(c1.r==10 && c1.i==2){
pass();
} else {
fail();
}
}

void test_addition(){
std::cout<<"Addition Test: ";
complex c1(1,1), c2(2,2), c3;
c3 = c1 + c2;
if(c3.r==3 &&c3.i==3){
pass();
} else {
fail();
}
}

};
int main(){
test_complex c;
c.test_default_values();
c.test_value_constructor();
c.test_addition();
return 0;
}

然后构建文件然后运行它!现在:我会朝着正确的方向前进吗?这可以称为一种单元测试吗?

最佳答案

你可以为那堂课准备一些……

instantiate and validate the defaults for r and i (assert) 

instantiate with non-default values and validate r and i are set properly (you need getters)

perform addition and validate the expected result (you can even do this with edge cases)

perform subtraction and validate the expected result (again with edge cases)

perform the multiplication and validate the expected result (again with edge cases)

单元测试应该测试单个代码单元……你有一个构造函数和三个运算符重载,这是四个测试中的最小值,但你应该始终检查默认值/设置值,并运行一些边缘如果您认为您的代码中可能存在问题,那么案例永远不会受到伤害。

关于c++ - 基本级别的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22937833/

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