2013-07-11 114 views
0

最初发布于googletestframework论坛。如何使用Google测试框架测试共享库

我刚开始与谷歌C++测试框架播放,并已通过样品的工作。我正在使用Linux,Eclipse和Linux GCC工具链。我还在Eclipse中安装了C/C++单元测试插件。

我有一个共享库项目,我试图编写测试,但遇到了一个我无法弄清楚的问题。为了测试我的共享库项目,我已经构建了一个单独的可执行项目,并将测试放在此项目中。

我已经添加了必要的包含路径和库,以便构建所有东西,但是当我尝试从我的可执行项目运行测试时,该测试输出没有向我显示任何有意义的东西。这是一个例子。

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

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++单元测试插件已经不知道该怎么做这个。

是否有某种原因,我没有得到通常相当谷歌测试框架的输出?

我想另外一个问题我已经是,如果这是使用测试框架来测试共享库代码的最佳方式?

感谢,

+0

它看起来像我图书馆抛出异常? “Assertion'_clientHashLength> 0'失败。”部分行可能是异常消息?我不使用谷歌测试,所以我不确定当一个意外的异常被抛出时它的消息是什么样的。 –

回答

1

感谢布雷,

那我指出了正确的方向。原来代码中有些东西被抛出(或者简单的失败)。我不能肯定地说这是因为我重写了代码,问题就消失了。我有一个类似的问题,插件失败,没有错误,但在命令行上运行测试导致seg故障错误消息。

我一直在做Java的很长一段时间,刚刚回来的C++。我想我习惯了更宽容的工具。

干杯,戴夫 。