【问题标题】:CMake for integrated Microsoft Unit Testing Framework (VS2017)用于集成 Microsoft 单元测试框架 (VS2017) 的 CMake
【发布时间】:2018-12-10 15:54:21
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: visual-studio unit-testing cmake


    【解决方案1】:

    这对我有用:

    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# 测试项目模板”

    【讨论】:

    • 尚不清楚 OP 是否询问托管 C++。 FWIW,原生C++测试框架在VS2019中依然存在,至少按照this link
    猜你喜欢
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2011-03-05
    • 2016-04-26
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多