C++ 在visualc+中使用Catch2+;2015
我正在尝试使用Catch框架进行单元测试项目,但是遇到了链接错误 我已按如下方式设置该项目: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
添加到stdafx.h
#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测试用例,请分享用户调查,从而得出这个结论。请分享用户调查,从而得出这个结论。