【问题标题】:Visual Studio C++ testing "name must be a namespace name" errorVisual Studio C++ 测试“名称必须是命名空间名称”错误
【发布时间】:2017-07-11 22:24:28
【问题描述】:

这是我所做的:

我首先创建了一个Win32ConsoleApplication

这是里面的代码:

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World!" << endl;

    system("pause");
    return 0;
}

然后我添加一个原生单元测试项目

在单元测试解决方案中,我右键单击References选项卡,然后添加ConsoleApplication2(项目名称)引用。

然后我转到 unittest.cpp,这就是我所看到的:

#include "stdafx.h"
#include "CppUnitTest.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest8
{       
    TEST_CLASS(UnitTest1)
    {
    public:

        TEST_METHOD(TestMethod1)
        {
            // TODO: Your test code here
        }

    };
}

在最顶部,我添加了自己的命名空间,如下所示:

using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace ConsoleApplication2;

但是说name must be a namespace name 是一个错误。为什么是这样?我做错了什么?

【问题讨论】:

  • 您是否添加了定义命名空间的文件?
  • 添加我的文件是什么意思?
  • 包含包含命名空间定义的标头
  • 我到底要添加什么?你在上面看到的就是我得到的代码
  • 命名空间 ConsoleApplication2 定义在哪里?

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


【解决方案1】:

您想使用未定义的命名空间。为了使用您想要的命名空间,您必须在其定义中包含该文件。

例如用

创建文件ConsoleApplication2.h
namespace ConsoleApplication2
{}

用你的函数填充它,然后将该文件包含到 unittest.cpp 中以使用命名空间:

#include "stdafx.h"
#include "CppUnitTest.h"
#include "ConsoleApplication2.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace ConsoleApplication2;
...

【讨论】:

  • 或者只是不要use命名空间,因为它不存在。
  • 那么这个问题也不存在 :) 他现在可以随心所欲地填充命名空间......
  • idk 为什么这不起作用。我完全按照你说的做了,但上面写着cannot open source file "ConsoleApplication2.h"
  • @maetulj Veesha 似乎是一个复制粘贴程序员(至少在这一点上),他写了“使用命名空间 ConsoleApplication2;”实际上不知道它做了什么。也许不知道命名空间是什么。正如您在此之前的评论中所看到的那样。
  • 不,我知道为什么,我是因为我必须提供绝对路径,当我做#include "..\bank\bank.h" 时,它就可以工作了。我必须提供绝对路径(银行是我创建的另一个项目)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 2020-02-02
  • 2020-02-08
  • 1970-01-01
  • 2015-02-21
相关资源
最近更新 更多