unittest++不识别测试
Unittest++ does not recognize tests
为了在扩展现有程序的功能之前重构它,我目前正在执行单元测试(这是我这周刚刚学到的)。
然而,unittest++突然给出了一个错误,说"项目包含0测试"后,我做了大约5-6个测试的模板类(完整的代码在这里),现在它一直给我这个错误,即使我已经恢复到测试代码之前的错误出现。现在,只要对象被实例化,它就会失败。
类用于管理优化算法中的数据数组,因此函数只是初始化,读取,写入和更新数组,其本身应该没有问题(或需要大量测试)。
我找不到一个讨论类似问题的线程。如果有人能给我指出原因,那就太好了。
规格:
我使用CodeLite 8.2.0作为Windows 8.1上的IDE, MinGW (TDM-GCC-32)作为编译器,unittest++ 1.3作为单元测试框架。
在unittest++中断之前的代码(以防它可能有用)如下:
#include "C:UnitTest++-1.3srcUnitTest++.h"
#include "candidate.h"
#include <stdexcept>
using namespace std;
int main(int argc, char **argv)
{
return UnitTest::RunAllTests();
}
//Test constructor and initialization of memories
TEST(init_num){
int numvar=4;
int fit_size=2;
int err=0;
Candidate<double> can;
try{
can.init_can(numvar, fit_size);
}
catch(out_of_range){
err=1;
}
catch(invalid_argument){
err=2;
}
CHECK(err==0);
//CHECK(can.num==numvar);
}
TEST(init_fitrange){
int numvar=2;
int fit_size=-1;
bool err=0;
Candidate<double> can;
try{
can.init_can(numvar, fit_size);
}
catch(invalid_argument){
err=1;
}
CHECK(err==1);
}
//Skip memory initialization check. If numvar and num_fit are valid the memory will be initialized properly.
TEST(velocity_init){
int numvar=2;
int fit_size=2;
double vel[numvar];
double total=0;
Candidate<double> can;
can.init_can(numvar, fit_size);
can.init_velocity();
for(int i=0;i<numvar;++i){
vel[i]=1;
}
can.update_vel(vel);
for(int i=0;i<numvar;++i){
total+=can.velocity[i];
}
CHECK(total==numvar);
//same mechanism as update_global, update_best and read functions
}
当我将这个测试附加到列表中时出现错误:
TEST(write_contfit){
int numvar=2;
int fit_size=2;
Candidate<double> can;
can.init_can(numvar, fit_size);
double fit[fit_size];
int tt=fit_size;
double total=0;
for(int i=0;i<fit_size;++i){
fit[i]=1;
}
can.write_contfit(fit,tt);
for(int i=0;i<fit_size;i++){
total+=can.contfit[i];
}
CHECK(total==fit_size);
}
在基本上将类拆分并在单元测试框架下重新构建之后,我发现了代码中使框架出错的地方。这与没有分配内存的数组指针操作有关。最有问题的函数是析构函数,它使用delete[]
释放任何内存分配。一个快速的修复方法是注释掉所有的delete[]
行。我不认为这是一个好方法,但至少它允许我测试类的其余部分。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 提升 ASIO 无法识别计时器对象
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 从udp接收帧对于人脸识别来说太慢
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 模板类无法识别友元运算符
- 数据成员SFINAE的C++17测试:gcc vs clang
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么二进制搜索在我的测试中不起作用
- 从父数组测试用例构造二叉树失败
- 试图对缓存进行跨步测试,但程序并没有结束
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为测试目标创建具有不同源文件夹的文件
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- Visual Studio 2010 单元测试:无法识别引用的项目类
- OpenCV 用于识别训练视频集中的对象,然后针对另一个视频对其进行测试
- Qt单元测试:为什么"qmake"无法识别
- unittest++不识别测试
- CUTE单元测试无法识别引发的异常