我正在构建一些使用向量并使用各种进程填充它们的子例程。其中一个过程是两个其他值的划分。但是,当我在两个不同的子程序中执行此操作时,我的单元测试表明它们并不相同。我今天犯了一些愚蠢的错误,如果很明显就道歉。下面的单元测试表明:
结果消息:断言失败。预期:其中-1.15741e-05>实际:其中-0.000208333>
我正在使用Visual Studio C ++测试框架。使用Assert
中的margin变量显示所有值都在我预期的0.0005之内,但不是0.00005。我的代码产生的值比我预期的要小17倍。
我的代码出了什么问题?或者我如何测试/调试以使其清楚?
vector< vector<float> > history;
vector<float> values;
vector< vector<float> > graph;
void populateArray(int input, int time) {
values.push_back(time);
values.push_back(input);
if (history.size() > 0) {
values.push_back(values[0] - history.back()[0]);
values.push_back(values[1] - history.back()[1]);
values.push_back(values[3] / values[2]);
}
history.push_back(values);
values.clear();
};
void drawGraph() {
float m, c, j, x1, x2;
vector<float> values;
int i = 0;
while (i < history.size() - 1) {
j = i + 1;
x1 = history[i][0];
x2 = history[j][0];
m = history[j][3] / history[j][2];
c = history[i][1] - m*x2;
i++;
values.push_back(x1);
values.push_back(x2);
values.push_back(m);
values.push_back(c);
graph.push_back(values);
values.clear();
}
};
单元测试代码:
TEST_METHOD(Graph_Equations_Correct) {
int i = 1;
while (i < 10) {
drawGraph();
Assert::AreEqual(graph.at(i)[2], history.at(i)[4]);
i++;
}
}