使用boost::filesystem添加头文件后,不再发现来自google测试的单元测试

Unit test from google test no longer found after adding header with boost::filesystem

本文关键字:google 再发现 测试 单元测试 不再 filesystem boost 添加 文件 使用      更新时间:2023-10-16

我有一个使用谷歌测试框架的unittest项目,我的测试工作正常。然而,现在我添加了boost::filesystem头像#include <boost/filesytem.hpp>,之后我的项目链接和编译很好,但是没有发现任何测试,当我运行测试它给我-

Process finished with exit code -1073741515 (0xC0000135) 
Empty test suite.

如果我有这样的代码:

#include <gtest/gtest.h>
TEST(Test, Test1){
    ASSERT_FALSE(true);
}

它工作得很好,找到失败的测试用例,但如果我添加boost头像这样:

#include <gtest/gtest.h>
#include <boost/filesystem.hpp>
TEST(Test, Test1){
    ASSERT_FALSE(true);
} 

之后什么也没找到。我使用基于cmake/clion/cygwin的env。

如果您能提出解决这些问题的方法,我将不胜感激。

错误码指示

//
// MessageId: STATUS_DLL_NOT_FOUND
//
// MessageText:
//
// The program can't start because %hs is missing from your computer. 
// Try reinstalling the program to fix this problem.
//
#define STATUS_DLL_NOT_FOUND             ((NTSTATUS)0xC0000135L)    // winnt

(参见启动。net应用程序时错误码0xc0000135意味着什么?)

我猜您使用了带有动态库的Google test来包含测试。由于您添加了Boost Filesystem,它现在将与Boost System和Boost Filesystem dll链接。

但是,测试运行器不能加载这些依赖项(导致所示的错误)。要么在系统范围内安装boost DLL,将它们复制到测试运行程序目标的输出目录(或启动测试运行程序的任何地方),要么使用清单文件指示DLL位置。

UPDATE正如评论者补充的那样,当然不链接到dll也会使问题消失