gpt4 book ai didi

c++ - 单元测试数学 C++ 例程

转载 作者:行者123 更新时间:2023-11-27 22:54:48 24 4
gpt4 key购买 nike

测试数学例程的最佳实践是什么。我正在使用下面的例程并尝试为其编写单元测试(我只是在学习单元测试)。我正在使用内置框架的 Visual Studio。

每当我开始尝试使用 Assert 命令来检查实际值与已知正确答案时,我最终都会编写我正在测试的相同代码来进行比较,这显然不能证明任何事情根本。处理此问题的常规方法是什么?

int averageGradient(int x1, int x2, float m) {
int i = 0, y1 = 0, y2 = 0;
while (y1 != 0 && y2 != 0) { //if both y values haven't been solved then keep trying
if (x1 >= graph[0][i] && x1 < graph[1][i] && y1 == 0) { // if x1 lies in the first straight line segment
y1 = (graph[2][i] * x1) + graph[3][i]; // then calculate it's y value (y1)
}
else { i++; } //otherwise incriment i to check the next straight line segment
if (x2 >= graph[0][i] && x2 < graph[1][i]) { //try the same thing for x2
y2 = (graph[2][i] * x2) + graph[3][i]; //calculate its y value (y2)
}
else { i++; }
}
m = (y2 - y1) / (x2 - x1);
return m;
};

最佳答案

  1. 让您的单元测试从文本文件读取输入和预期输出。这使得生成和比较值而不是机制更容易。
  2. 明确测试所有边界,例如 INT_MIN、INT_MIN+1、-1、0、1、INT_MAX-1、INT_MAX。对于 float ,尝试输入 INF 和 NAN。如果没有别的,你的测试可以帮助你记录你的函数在这些值存在的情况下做了什么。
  3. 如果您现在确信您的算法是正确的,请编写大量随机输入,生成输出,抽查它们的完整性,然后检查它们。如果将来结果发生变化,这会提醒您。这是“黑盒”测试,意味着您并不清楚“正确”的值是什么,但是如果您相信今天的算法是正确的,您希望确保它不会改变.

关于c++ - 单元测试数学 C++ 例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34313729/

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