Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 单元测试&x2B+;不承认测试_C++_Windows_Unit Testing_Codelite_Unittest++ - Fatal编程技术网

C++ 单元测试&x2B+;不承认测试

C++ 单元测试&x2B+;不承认测试,c++,windows,unit-testing,codelite,unittest++,C++,Windows,Unit Testing,Codelite,Unittest++,我目前正在执行单元测试(这周我刚刚学到),以便在扩展现有程序的功能之前重构它 然而,在我对一个模板类()进行了大约5-6次测试之后,UnitTest++突然出现了一个错误,说“项目包含0个测试”,现在它一直给我这个错误,即使我已经将测试代码恢复到错误出现之前的状态。现在,只要实例化对象,它就会失败 该类用于在优化算法中管理数据数组,因此函数仅用于初始化、读取、写入和更新数组,其本身不应成为问题(或需要大量测试) 我找不到讨论类似问题的帖子。如果有人能为我指出原因,那就太好了 规格: 我在Wind

我目前正在执行单元测试(这周我刚刚学到),以便在扩展现有程序的功能之前重构它

然而,在我对一个模板类()进行了大约5-6次测试之后,UnitTest++突然出现了一个错误,说“项目包含0个测试”,现在它一直给我这个错误,即使我已经将测试代码恢复到错误出现之前的状态。现在,只要实例化对象,它就会失败

该类用于在优化算法中管理数据数组,因此函数仅用于初始化、读取、写入和更新数组,其本身不应成为问题(或需要大量测试)

我找不到讨论类似问题的帖子。如果有人能为我指出原因,那就太好了

规格:

我在Windows8.1上使用CodeLite8.2.0作为IDE,MinGW(TDM-GCC-32)作为编译器,UnitTest++1.3作为单元测试框架

UnitTest++中断之前的代码(以防有用)如下所示:

#include "C:\UnitTest++-1.3\src\UnitTest++.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
}
#包括“C:\UnitTest++-1.3\src\UnitTest++.h”
#包括“候选者.h”
#包括
使用名称空间std;
int main(int argc,字符**argv)
{
返回UnitTest::RunAllTests();
}
//测试构造函数和内存初始化
测试(初始数量){
int numvar=4;
int fit_size=2;
int err=0;
候选人可以;
试一试{
can.init_can(numvar,fit_size);
}
捕获(超出范围){
误差=1;
}
catch(无效的_参数){
误差=2;
}
检查(错误==0);
//检查(can.num==numvar);
}
测试(初始范围){
int numvar=2;
int fit_size=-1;
布尔误差=0;
候选人可以;
试一试{
can.init_can(numvar,fit_size);
}
catch(无效的_参数){
误差=1;
}
检查(错误=1);
}
//跳过内存初始化检查。如果numvar和num_fit有效,内存将正确初始化。
测试(速度_init){
int numvar=2;
int fit_size=2;
双水平[numvar];
双倍合计=0;
候选人可以;
can.init_can(numvar,fit_size);
can.init_velocity();

对于(int i=0;i在基本上将类拆开并在单元测试框架下重新构建之后,我发现代码中的哪些地方使框架出错。这与没有分配内存的数组指针上的操作有关。最有问题的函数是析构函数,它使用
del释放任何内存分配ete[]
。一个快速修复方法是注释掉所有
delete[]
行。我认为这不是一个好方法,但至少它允许我测试类的其余部分。

基本上将类拆分并在单元测试框架下重新构建后,我发现代码中的哪些地方使框架出错了。这与未分配内存的数组指针上的操作有关内存。最有问题的函数是析构函数,它使用
delete[]
释放所有内存分配。一个快速修复方法是注释掉所有
delete[]
行。我认为这不是一个好方法,但至少它允许我测试类的其余部分。

当我尝试在不构建项目的情况下运行单元测试时,我遇到了这个问题。它对我的工作方式是:激活测试项目(双击),构建它(F7),然后运行(F5)当我试图在不构建项目的情况下运行单元测试时,我遇到了这个问题。它对我的工作方式是:激活测试项目(双击),构建它(F7),然后运行(F5)
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);
}