gpt4 book ai didi

visual-studio - 用于集成 Microsoft 单元测试框架的 CMake (VS2017)

转载 作者:行者123 更新时间:2023-12-02 00:56:53 25 4
gpt4 key购买 nike

类似于我之前的问题,但专门针对 Microsoft 单元测试框架:

Visual Studio 2017 集成了 C++ 单元测试(MS 单元测试、谷歌测试等)。如何创建一个 CMakeLists.txt 文件来创建这样的项目,该项目将使用集成的 IDE 测试,特别是使用 Microsoft 单元测试框架?

谢谢!

最佳答案

这对我有用:

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(tests)
include_directories("D:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Auxiliary/VS/UnitTest/include")
link_directories("D:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Auxiliary/VS/UnitTest/lib/x86/Microsoft.VisualStudio.TestTools.CppUnitTestFramework.lib")
add_library(tests SHARED tests.cpp)

您可能需要更改安装 Visual Studio 的路径。

测试.cpp
#include <CppUnitTest.h>
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

TEST_MODULE_INITIALIZE(ModuleInitialize)
{
Logger::WriteMessage("In Module Initialize");
}

TEST_MODULE_CLEANUP(ModuleCleanup)
{
Logger::WriteMessage("In Module Cleanup");
}

TEST_CLASS(Class1)
{

public:

Class1()
{
Logger::WriteMessage("In Class1");
}

~Class1()
{
Logger::WriteMessage("In ~Class1");
}

TEST_CLASS_INITIALIZE(ClassInitialize)
{
Logger::WriteMessage("In Class Initialize");
}

TEST_CLASS_CLEANUP(ClassCleanup)
{
Logger::WriteMessage("In Class Cleanup");
}

TEST_METHOD(Method1)
{
Logger::WriteMessage("In Method1");
Assert::AreEqual(0, 0);
}

TEST_METHOD(Method2)
{
Assert::Fail(L"Fail");
}
};

在测试输出中,我有
[1/4/2019 9:51:56 PM Informational] ------ Discover test started ------
[1/4/2019 9:51:59 PM Warning] No test is available in D:\dev\cpptest\SO54039205\Debug\SO54039205.exe. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
[1/4/2019 9:51:59 PM Informational] ========== Discover test finished: 0 found (0:00:02.8603805) ==========
[1/4/2019 9:54:14 PM Informational] ------ Discover test started ------
[1/4/2019 9:54:18 PM Warning] No test is available in D:\dev\cpptest\SO54039205\Debug\SO54039205.exe. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
[1/4/2019 9:54:18 PM Informational] ========== Discover test finished: 0 found (0:00:03.7709729) ==========
[1/4/2019 9:54:38 PM Informational] ------ Discover test started ------
[1/4/2019 9:54:39 PM Warning] No test is available in D:\dev\cpptest\SO54039205\Debug\SO54039205.exe. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
[1/4/2019 9:54:39 PM Informational] ========== Discover test finished: 0 found (0:00:00.7098537) ==========
[1/4/2019 9:54:49 PM Informational] ------ Discover test started ------
[1/4/2019 9:54:50 PM Warning] No test is available in D:\dev\cpptest\SO54039205\Debug\SO54039205.exe. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
[1/4/2019 9:54:50 PM Informational] ========== Discover test finished: 0 found (0:00:00.7292453) ==========
[1/4/2019 9:54:56 PM Informational] ------ Discover test started ------
[1/4/2019 9:54:56 PM Warning] No test is available in D:\dev\cpptest\SO54039205\Debug\SO54039205.exe. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
[1/4/2019 9:54:56 PM Informational] ========== Discover test finished: 0 found (0:00:00.7365023) ==========
[1/4/2019 9:55:00 PM Informational] ------ Discover test started ------
[1/4/2019 9:55:01 PM Warning] No test is available in D:\dev\cpptest\SO54039205\Debug\SO54039205.exe. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
[1/4/2019 9:55:01 PM Informational] ========== Discover test finished: 0 found (0:00:00.7208954) ==========
[1/4/2019 9:55:01 PM Informational] ------ Discover test started ------
[1/4/2019 9:55:02 PM Warning] No test is available in D:\dev\cpptest\SO54039205\Debug\SO54039205.exe. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
[1/4/2019 9:55:02 PM Informational] ========== Discover test finished: 0 found (0:00:00.6999031) ==========
[1/4/2019 10:34:09 PM Informational] ------ Discover test started ------
[1/4/2019 10:34:13 PM Informational] ========== Discover test finished: 2 found (0:00:04.0145243) ==========
[1/4/2019 10:34:19 PM Informational] ------ Run test started ------
[1/4/2019 10:34:20 PM Informational] In Module Initialize
[1/4/2019 10:34:20 PM Informational] In Class Initialize
[1/4/2019 10:34:20 PM Informational] In Class1
[1/4/2019 10:34:20 PM Informational] In Method1
[1/4/2019 10:34:20 PM Informational] In ~Class1
[1/4/2019 10:34:20 PM Informational] In Class1
[1/4/2019 10:34:20 PM Informational] In ~Class1
[1/4/2019 10:34:20 PM Informational] In Class Cleanup
[1/4/2019 10:34:20 PM Informational] In Module Cleanup
[1/4/2019 10:34:21 PM Informational] ========== Run test finished: 2 run (0:00:01.1969982) ==========

enter image description here

请注意,从 Visual Studio 2019 开始,此测试框架将被弃用,因此我不希望您投资它。从发行说明:
“托管 C++ 测试项目模板不再可用。您可以继续在现有项目中使用托管 C++ 测试框架,但对于新的单元测试,请考虑使用 Visual Studio 为其提供模板的 native 测试框架之一(MSTest、Google测试)或托管 C# 测试项目模板”

关于visual-studio - 用于集成 Microsoft 单元测试框架的 CMake (VS2017),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53709197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com