使用向量运算的单元测试中出现未处理的C++异常
Unhandled C++ Exception in Unit Test with Vector Operations
我正在单元测试一个例程,该例程应该从一个向量中获取一些数据,对其进行处理,并将其放回一个向量向量中。然而,在我的Visual Studio 2015单元测试中,它抛出了一个未处理的C++异常(下面是完整的错误描述),我的代码出了什么问题?
此测试方法引发错误:
TEST_METHOD(Graph_Equations_Correct) {
vector< vector<float> > graph;
int i = 1;
while (i < 10) {
drawGraph();
Assert::AreEqual(graph.at(i)[2], history.at(i)[4]);
i++;
}
}
结果StackTrace:在c:\program files(x86)\microsoft visual studio 14.0\vc\include\vector:line 1789中的std::vector>,std::分配器>>::_Xran()在c:\program files(x86)\microsoft visual studio 14.0\vc\include\vector:line 1208中的std::vector>,std::分配器>>::at()在c:\users\george\documents\history testing 2\UnitTest1\UnitTest1.cpp:行32中的UnitTest1::MyTests::Graph_Equations_Correct()结果消息:未处理的C++异常
这是DrawGraph():
vector< vector<float> > graph;
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();
}
};
历史是另一个载体。在第一行上,它只有两个值,但随后的每一行(又增加了14个)都有5个值,这就形成了一个15 x 5的值,顶部行上只有2个值。我已经调试过了,这是正确的。另外,替换Assert行中的图形引用可以消除错误,所以我认为这就是问题所在。
根据您发布的内容,问题是您有两个不同的graph
向量,一个本地向量和一个全局向量。
您在drawGraph
函数中填充全局函数,但在测试函数中访问本地未填充的函数。
如果使用vector::at()
而不是operator[]
来访问测试函数中的元素,而不是未处理的异常,则会引发out_of_range
异常,从而更清楚地指出问题。
- 在c++中实现LinkedList时,应出现未处理的错误
- 如何修复链表类实现的未处理异常0xDDDDDDDD
- 在信号处理程序中捕获C++未处理的异常并恢复应用程序
- 在C++程序中使用的迭代器中未处理的异常
- 在 ******.exe 中0x00000000772CA267 (ntdll.dll) 处未处理的异常:0xC0000
- 未处理的异常与 cudaMemcpy2D
- 处理未处理的异常更改C++
- for 循环中未处理的异常
- VisualC++ 2010 有没有办法找出有关未处理异常错误的更多详细信息
- 为什么此代码导致未处理的异常失败
- 瓦尔格林德:注意到但未处理的国际奥克特尔;是否有必要处理以及如何找到?
- 在OpenCV_core310.dll中使用findContours函数时,OpenCV引发未处理的异常
- 0x0F50DF58:0xC0000005:访问冲突读取位置0x0047CA04时未处理的异常
- 使用 getline 时未处理的异常
- 错误 : 异常 : 引发未处理的异常: 读取访问冲突.0xDDDDDDDD临时温度
- 核心消息传递中未处理的异常.dll在程序关闭期间
- 在 Hello World.exe 中0x0F828F0E (ucrtbased.dll) 处未处理的异常: 0xC00
- 从向量中删除元素时未处理的异常
- QML:多个键按 /发布后未处理一些键
- C++ 程序中双链表的未处理异常