繁体   English   中英

如何使用Google Test Framework测试共享库

[英]How to test shared libraries with Google Test Framework

最初发布在googletestframework论坛中。

我刚刚开始使用Google C ++ Test框架,并完成了示例。 我正在使用Linux,Eclipse和Linux GCC工具链。 我还在Eclipse中安装了C / C ++单元测试插件。

我有一个共享库项目,我正在尝试为其编写测试,但是遇到了一个我不知道的问题。 为了测试共享库项目,我建立了一个单独的可执行项目,并将测试放在该项目中。

我添加了必要的include路径和库,以便所有内容都可以构建,但是当我尝试在可执行项目中运行测试时,该可执行项目链接到被测类,则测试输出不会显示任何有意义的信息。 这是一个例子。

这是我的测试类,是可执行项目中名为ChallengeResponsePacketTest.cpp的文件(ChallengeResponsePacket是我的共享库项目中的类)。

TEST(ChallengeResponsePacketTest, shouldSerializePacket) {
    const unsigned char SALT[] = {0x01, 0x02, 0x03};
    const char username[] = "daver";
    unsigned char buffer[100];

    ChallengeResponsePacket packet;
    packet.setSaltValue(SALT, sizeof(SALT));
    packet.setCompressionType(0);
    packet.setEncryptionType(0);
    packet.setUsername(username);
    int size = packet.serialize(buffer, sizeof(buffer));

    EXPECT_EQ(12, size);
    EXPECT_EQ(5, buffer[0]);
}

这是我得到的输出:

[----------] 1 test from ChallengeResponsePacketTest
[ RUN      ] ChallengeResponsePacketTest.shouldSerializePacket
gtest_test: ../src/ChallengeResponsePacket.cpp:34: virtual int tnp::ChallengeResponsePacket::serialize(unsigned char*, size_t) const: Assertion `_clientHashLength > 0' failed.
Aborted

可以想象,C / C ++单元测试插件不知道如何处理。

是否由于某些原因我没有得到通常漂亮的Google Test Framework输出?

我想我还有一个问题是这是否是使用测试框架测试共享库代码的最佳方法?

谢谢,

谢谢布雷特,

那为我指明了正确的方向。 原来在代码中有东西被抛出(或仅仅失败了)。 我不能确定是什么原因,因为我重写了代码,问题就消失了。 我有一个类似的问题,其中插件失败,没有错误,但是在命令行上运行测试导致seg fault错误消息。

我从事Java已有很长时间了,刚刚回到C ++。 我想我已经习惯了更宽容的工具。

干杯,戴夫。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM