【问题标题】:Trouble with unit tests in vs2013 c++ projectvs2013 c++项目中的单元测试问题
【发布时间】:2017-03-11 23:04:08
【问题描述】:

我正在尝试在 vs2013 中为我的 c++ 代码创建单元测试,其中包含 CLocalDBManager.h 和 CLocalDBManager.cpp 文件,确定单个类,并包括 4 个具有结构和 sqlite 源的 .h 文件。
我尝试了像here 这样的所有操作,并且对于复制粘贴的代码效果很好,但是当我尝试使用自己的代码时,出现了问题。

当我创建新的单元测试项目并从上面的链接添加 HelloWorld.cpp 和 HelloWorld.h 文件时,一切正常,但是当我尝试在新项目中添加 CLocalDBManager.h 和 CLocalDBManager.cpp 时,编译器会发疯 -它在 .cpp 文件中发现了很多错误,如下所示:

enter image description here

所有包含和其他东西完全按照示例制作,我真的不知道如何处理它。

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 = ")";
};

文件 CLocalDBManager.cpp 包含这 2 个类函数的包含和实现

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

而且,这些错误每次都会出现,无论我是否在单元测试 .cpp 中包含 CLocalDBManager.h。

【问题讨论】:

    标签: c++ unit-testing visual-studio-2013


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多