В настоящее время я выполняю модульные тесты (которые я только что узнал на этой неделе), чтобы реорганизовать существующую программу, прежде чем расширять ее функциональность.Unittest ++ не распознает тесты
Однако UnitTest ++ неожиданно сообщила об ошибке «Проект содержит 0 тестов» после того, как я сделал около 5-6 тестов в классе шаблонов (full code here), и теперь он продолжает давать мне эту ошибку, хотя я вернулся тестовый код до того, что было до появления ошибки. Прямо сейчас он прерывается всякий раз, когда объект создается.
Класс предназначен для управления массивами данных в алгоритме оптимизации, поэтому функции предназначены только для инициализации, чтения, записи и обновления массивов и сами по себе не должны были быть проблемой (или нуждаться в большом тестировании).
Я не могу найти тему, которая обсуждает аналогичную проблему. Если кто-то может указать мне на причину, это было бы здорово.
Технические характеристики:
Я использую CodeLite 8.2.0 как IDE на Windows, 8.1 с 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
}
ошибка пришла, когда я приложил этот тест в списке:
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);
}
У меня была эта проблема, когда я пытался запускать модульные тесты без создания проекта. Для меня это работает: активируйте тестовый проект (дважды щелкните), постройте его (F7), затем запустите (F5) –