简体   繁体   English

vs2013 C ++项目中的单元测试问题

[英]Trouble with unit tests in vs2013 c++ project

I'm trying to create unit tests for my c++ code in vs2013, which contains CLocalDBManager.h and CLocalDBManager.cpp files, determining single class, and includes 4 .h files with structures and sqlite sources. 我正在尝试为vs2013中的c ++代码创建单元测试,其中包含CLocalDBManager.h和CLocalDBManager.cpp文件,确定单个类,并包括具有结构和sqlite源的4个.h文件。
I tried to do everything like here , and it worked fine for copypasted code, but when I try to use my own code, something goes wrong. 我试图像这里一样做所有事情,并且对复制粘贴的代码效果很好,但是当我尝试使用自己的代码时,出现了问题。

When I create new unit test project and add HelloWorld.cpp and HelloWorld.h files from the link above, everything works flawlessly, but when I try to add CLocalDBManager.h and CLocalDBManager.cpp in new one, compiler goes crazy - it founds a lot of errors in .cpp file, like here: 当我创建新的单元测试项目并从上面的链接添加HelloWorld.cpp和HelloWorld.h文件时,一切正常,但是当我尝试在新的项目中添加CLocalDBManager.h和CLocalDBManager.cpp时,编译器发疯了-它发现一个.cpp文件中的很多错误,例如:

enter image description here 在此处输入图片说明

All includes and other stuff made exactly as in example, and I really don't know what to do with it. 所有包含内容和其他内容完全与示例中所示相同,我真的不知道该怎么做。

There is code from CLocalDBManager.h file: 从CLocalDBManager.h文件中有代码:

#include "SLandlord.h"
#include "SOffice.h"
#include "SMapSegment.h"
#include "SBuilding.h"
#include "sqlite3.h"
#include <string>
#include <map>
#include <vector>

#pragma once

class CLocalDBManager
{
public:
    template <class T> int LoadItemByID(int nID, T *sResult); //exception
    std::vector <int> FindBuildingsInArea(int nTopCoordinate, int nBottomCoordinate, int LeftCoordinate, int RightCoordinate);

    static int _LoadMapSegmentByIDCallback(void *vResult, int nNumberOfColumns, char **cData, char **cColumnNames) _NOEXCEPT;
    static int _LoadBuildingByIDCallback(void *vResult, int nNumberOfColumns, char **cData, char **cColumnNames) _NOEXCEPT;
    static int _LoadOfficeByIDCallback(void *vResult, int nNumberOfColumns, char **cData, char **cColumnNames) _NOEXCEPT;
    static int _LoadLandlordByIDCallback(void *vResult, int nNumberOfColumns, char **cData, char **cColumnNames) _NOEXCEPT;
    static int _FindBuildingsInAreaCallback(void *vSuitableBuildings, int nNumberOfColumns, char **cData, char **cColumnNames);

private:
    void _OpenConnection(); //exception
    void _CloseConnection() _NOEXCEPT;

    sqlite3 *m_sqlHandler;
    const char *m_cDBFile = "DB.sqlite";

    const std::string m_strQueryPrefix = "SELECT ";
    const std::string m_strQueryAny = "*";
    const std::string m_strQuerySource = " FROM ";
    const std::string m_strQueryConditions = " WHERE ";
    const std::string m_strQueryEqual = " = ";
    const std::string m_strQueryPt1 = "(XCoordinate BETWEEN";
    const std::string m_strQueryRange = " AND ";
    const std::string m_strQueryPt3 = ") AND (YCoordinate BETWEEN ";
    const std::string m_strQueryPt4 = ")";
};

And file CLocalDBManager.cpp contains these 2 includes and implementations of class functions 文件CLocalDBManager.cpp包含这2个include和类函数的实现

#include "CLocalDBManager.h"
#include "stdafx.h"

Also, these errors appear every time, no matter if I included CLocalDBManager.h in unit test .cpp or not. 而且,无论我是否在单元测试.cpp中包括CLocalDBManager.h,这些错误每次都会出现。

刚刚发现,问题出在预编译的头文件上,禁用了它们,一切正常

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM