C++ 在visualc+中使用Catch2+;2015

C++ 在visualc+中使用Catch2+;2015,c++,visual-studio,unit-testing,catch-unit-test,C++,Visual Studio,Unit Testing,Catch Unit Test,我正在尝试使用Catch框架进行单元测试项目,但是遇到了链接错误 我已按如下方式设置该项目: 创建本机单元测试项目 将Catch添加到include目录 将添加到stdafx.h 编写以下简单的源文件 unittest.cpp: #include "stdafx.h" namespace Catch2_Test { TEST_CASE("Y U no work") { REQUIRE(1); } } 问题是我从克隆了Catch2,而VS集成则在一个上运行。问题是我从克隆了C

我正在尝试使用Catch框架进行单元测试项目,但是遇到了链接错误

我已按如下方式设置该项目:

  • 创建本机单元测试项目
  • 将Catch添加到include目录
  • 添加到stdafx.h
  • 编写以下简单的源文件
  • unittest.cpp:

    #include "stdafx.h"
    namespace Catch2_Test
    {
      TEST_CASE("Y U no work")
      {
        REQUIRE(1);
      }
    }
    

    问题是我从克隆了Catch2,而VS集成则在一个上运行。

    问题是我从克隆了Catch2,而VS集成则在一个上运行。

    用于将Catch集成到Visual Studio中。
    请参阅ACCU文章

    用于在预编译的标题中使用Catch2
    请参阅,其中horenmar给出了一个示例。这些更改已作为v2.1.0的一部分发布

    总之,给出的解决方案是:

    // stdafx.h
    #pragma once
    
    #include "targetver.h"
    
    #include <stdio.h>
    #include <tchar.h>
    
    #define CATCH_CONFIG_ALL_PARTS
    #include "catch.hpp"
    
    // PCH-test.cpp:
    #include "stdafx.h"
    
    #undef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED
    #define CATCH_CONFIG_IMPL_ONLY
    #define CATCH_CONFIG_MAIN
    #include "catch.hpp"
    
    // tests1.cpp:
    #include "stdafx.h"
    
    TEST_CASE("FooBarBaz") {
        REQUIRE(1 == 2);
    }
    
    //stdafx.h
    #布拉格语一次
    #包括“targetver.h”
    #包括
    #包括
    #定义捕获配置所有部分
    #包括“catch.hpp”
    //PCH-test.cpp:
    #包括“stdafx.h”
    #未定义两个BlueCubes\u单个\u包含\u捕获\u HPP\u包含
    #仅定义CATCH_CONFIG_IMPL_
    #定义CATCH_CONFIG_MAIN
    #包括“catch.hpp”
    //tests1.cpp:
    #包括“stdafx.h”
    测试用例(“FooBarBaz”){
    要求(1==2);
    }
    
    用于将Catch集成到Visual Studio中
    请参阅ACCU文章

    用于在预编译的标题中使用Catch2
    请参阅,其中horenmar给出了一个示例。这些更改已作为v2.1.0的一部分发布

    总之,给出的解决方案是:

    // stdafx.h
    #pragma once
    
    #include "targetver.h"
    
    #include <stdio.h>
    #include <tchar.h>
    
    #define CATCH_CONFIG_ALL_PARTS
    #include "catch.hpp"
    
    // PCH-test.cpp:
    #include "stdafx.h"
    
    #undef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED
    #define CATCH_CONFIG_IMPL_ONLY
    #define CATCH_CONFIG_MAIN
    #include "catch.hpp"
    
    // tests1.cpp:
    #include "stdafx.h"
    
    TEST_CASE("FooBarBaz") {
        REQUIRE(1 == 2);
    }
    
    //stdafx.h
    #布拉格语一次
    #包括“targetver.h”
    #包括
    #包括
    #定义捕获配置所有部分
    #包括“catch.hpp”
    //PCH-test.cpp:
    #包括“stdafx.h”
    #未定义两个BlueCubes\u单个\u包含\u捕获\u HPP\u包含
    #仅定义CATCH_CONFIG_IMPL_
    #定义CATCH_CONFIG_MAIN
    #包括“catch.hpp”
    //tests1.cpp:
    #包括“stdafx.h”
    测试用例(“FooBarBaz”){
    要求(1==2);
    }
    
    有些事情:1。去阅读catch教程。它向您展示了如何进行设置。在某个地方,您需要定义一个宏(我认为它是
    CATCH\u CONFIG\u MAIN
    )来包含
    。此文件不需要使用预编译头。2.不要为此使用本机单元测试项目;这些项目设计用于VisualStudio的单元测试library@Justin我知道这一点。我一直在关注Catch教程本身,了解如何将其集成到VC++中,以便可以使用测试资源管理器而不是控制台。@AryaPourtabatabaie AFAIK,这目前还不能完成。您在某种程度上混淆了两个问题:在预编译头中使用Catch,以及将Catch集成到VisualStudio中。去阅读catch教程。它向您展示了如何进行设置。在某个地方,您需要定义一个宏(我认为它是
    CATCH\u CONFIG\u MAIN
    )来包含
    。此文件不需要使用预编译头。2.不要为此使用本机单元测试项目;这些项目设计用于VisualStudio的单元测试library@Justin我知道这一点。我一直在关注Catch教程本身,了解如何将其集成到VC++中,以便可以使用测试资源管理器而不是控制台。@AryaPourtabatabaie AFAIK,这目前还不能完成。你已经在某种程度上混合了两个问题:使用预编译头中的catch,并将catch集成到VisualStudio中。尝试在VS2017中集成,测试适配器为CATCH2,RESHARPARI+ C++也可以识别VS2017中的CasC2测试用例集,测试适配器为CATCH2,并且ReCalPrimeC++也可以识别CATCH2测试用例,请分享用户调查,从而得出这个结论。请分享用户调查,从而得出这个结论。