如何编写单元测试
How to write a unit test
everyone.
我是单元测试的新手,无法理解它。
我有一个具有 process(( 函数的模块。内部 process(( 函数模块做了很多不平凡的工作。任务是检查模块的输出。
例如,在 process(( 方法中有一个计算距离值的方法 calculateDistance((。测试要求听起来像"检查模块是否计算距离..."
据我了解,我必须:
- 准备输入数据
- 调用模块的 process(( 方法
- 用手计算距离
- 获取模块的距离输出值
- 将此值与计算的值进行比较。
但是对于一些琐碎的情况,例如一些算术运算,这很容易。但是,如果在 calculateDistance(( 中有很多公式怎么办。我应该如何计算这个距离的值?我是否应该将所有源代码从 calculateDistance(( 函数复制到测试代码以计算步骤 3 中的此值?
下面是源代码示例:
void process(PropertyList& propList)
{
m_properties = &propList;
...
for (int i = 0; i < m_properties.propertiesCount; i++)
{
calculateDistance();
}
}
void calculateDistance(int indx)
{
Property& property = m_properties->properties[indx];
property.distance = 0;
for (int i = 0; i < property.objectsCount - 1; i++)
{
property.distance += getDistanceBetweenObjs(i, i + 1);
}
}
int getDistanceBetweenObjects(indx1, indx2)
{
// here is some complex algorithm of calculating the distance
}
所以,我的问题是:我是否应该准备输入数据,我知道结果距离值,并将该值与输出值进行比较?或者我应该获取输入数据结构,以与 calculateDistance(( 方法相同的方式计算距离值(这里是代码重复(并将该值与输出距离进行比较?
但是如果在 calculateSmth(( 中有很多公式呢?
重构代码并分解这些公式以分离函数并单独测试它们。
相关文章:
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 如何用 c++ 编写单元测试?
- 如何编写单元测试
- 在为函数编写单元测试时,我应该模拟所做的内部函数调用吗?
- 使用XCtest编写C 单元测试
- C 中的Google单元测试:如何编写持久数据文件
- 如何为将回调作为其参数的函数编写单元测试
- 如何在MVVM Windows应用商店应用程序中为专用C++模型层编写Visual Studio单元测试
- 使用QTestLib编写单元测试
- 如何编写网络客户端的单元测试
- 当要测试的类很复杂时,如何编写单元测试
- 在函数/类声明附近编写C++单元测试
- 我应该使用std::system来编写单元测试的脚本部分吗
- C++项目的单元测试是如何编写的
- 如何为一些类(如timer类)编写单元测试
- 如何编写一个秒表的单元测试
- 用cpp编写的单元测试代码
- 从c#为c++库编写单元测试的最佳方法是什么?