【发布时间】:2018-12-10 15:54:21
【问题描述】:
与我之前的问题类似,但专门针对 Microsoft 单元测试框架:
Visual Studio 2017 集成了 C++ 单元测试(MS 单元测试、google 测试等)。如何创建一个 CMakeLists.txt 文件来创建这样的项目,该项目将使用集成 IDE 测试,特别是使用 Microsoft 单元测试框架?
谢谢!
【问题讨论】:
标签: visual-studio unit-testing cmake
与我之前的问题类似,但专门针对 Microsoft 单元测试框架:
Visual Studio 2017 集成了 C++ 单元测试(MS 单元测试、google 测试等)。如何创建一个 CMakeLists.txt 文件来创建这样的项目,该项目将使用集成 IDE 测试,特别是使用 Microsoft 单元测试框架?
谢谢!
【问题讨论】:
标签: visual-studio unit-testing cmake
这对我有用:
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 的路径。
tests.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) ==========
请注意,从 Visual Studio 2019 开始,此测试框架将被弃用,因此我不建议您投资它。从发行说明: “托管 C++ 测试项目模板不再可用。您可以继续在现有项目中使用托管 C++ 测试框架,但对于新的单元测试,请考虑使用 Visual Studio 为其提供模板的本机测试框架之一(MSTest、Google测试)或托管 C# 测试项目模板”
【讨论】: