gpt4 book ai didi

c++ - 谷歌测试 : "char-array initialized from wide string"

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:59 26 4
gpt4 key购买 nike

我已经实现了类型参数化测试 ( Sample #6 ) 以将相同的测试用例应用于多个类。碰巧在将字符串分配给 signed char[] 时, unsigned char[] , const signed char[]const unsigned char[] ,我得到:

../stackoverflow.cpp: In member function ‘void IosTest_DummyTest_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = std::basic_istream<char, std::char_traits<char> >]’:                           
../stackoverflow.cpp:34: instantiated from here
../stackoverflow.cpp:32: error: char-array initialized from wide string

更有趣的是,当将测试用例应用于一种类型时,一切都很好,但是当我添加第二种类型时,它就崩溃了。我可以在以下代码中重现错误:

#include "gtest/gtest.h"
#include <iostream>

// Factory methods
template<class T> std::ios* CreateStream();

template<>
std::ios* CreateStream<std::istream>() {
return &std::cin;
}

template<>
std::ios* CreateStream<std::ostream>() {
return &std::cout;
}

// Fixture class
template<class T>
class IosTest: public ::testing::Test {
protected:
IosTest() : ios_(CreateStream<T>()) {}
virtual ~IosTest() {}
std::ios* const ios_;
};

using testing::Types;
typedef Types<std::istream, std::ostream> Implementations;
TYPED_TEST_CASE(IosTest, Implementations);

TYPED_TEST(IosTest, DummyTest) {
signed char c[] = ".";
this->ios_->fill(c[0]);
};

在行typedef Types<std::istream, std::ostream> Implementations;创建了一个名为 Implementations 的类型列表在下一行中,TYPED_TEST_CASE(IosTest, Implementations); , 被定义为测试用例 IosTest将应用于 Implementations 中定义的类型列表。

正如我已经说过的,如果我删除 std::istreamstd::ostream来自 Implementations我可以在没有任何警告的情况下编译和运行测试(我正在使用 -Wall 标志)。谁能解释一下这个现象?

最佳答案

是否有可能您的 gtest 库是使用与您编译应用程序 (stackoverflow.cpp) 不同的版本编译器构建的?我记得看到这条错误消息与我用较新版本的 gcc 构建的库有关,并试图将其与旧版本的 gcc 链接。

您可以尝试从源代码构建 gtest。它附带一个脚本,可将所有内容提取并融合到单个头文件和单个 cpp 文件中。

在您的 gtest 安装中查找此 python 脚本:

gtest/scripts/fuse_gtest_files.py

脚本中有关于如何运行它的说明。您最终得到两个文件:

  • gtest-all.cc
  • gtest.h

您只需执行一次并将其添加到您的 makefile 中。我这样做是为了向客户分发基于 Linux 的应用程序。

关于c++ - 谷歌测试 : "char-array initialized from wide string",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7044282/

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