最初发布在googletestframework论坛。
我刚刚开始使用Google C ++测试框架,并已经完成了样本。我正在使用Linux,Eclipse和Linux GCC工具链。我还在Eclipse中安装了C / C ++单元测试插件。
我有一个共享库项目,我正在尝试编写测试,但遇到了一个我无法弄清楚的问题。为了测试我的共享库项目,我构建了一个单独的可执行项目并将我的测试放在这个项目中。
我添加了必要的包含路径和库,以便所有内容都可以构建,但是当我尝试从可执行项目中运行测试时,它会链接到测试中的类,但测试输出并没有向我显示任何有意义的内容。这是一个例子。
这是我的测试类,可执行项目中名为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输出?
我想我的另一个问题是,这是否是使用测试框架测试共享库代码的最佳方式?
谢谢,
答案 0 :(得分:1)
谢谢布雷特,
这指向了我正确的方向。事实证明,代码中有一些东西被抛出(或者只是失败)。我不能肯定地说是什么,因为我重写了代码并且问题消失了。我有一个类似的问题,插件失败,没有错误,但在命令行上运行测试导致seg错误错误消息。
我已经做了很长时间的Java并且刚刚回到C ++。我想我已经习惯了更宽容的工具。
干杯, 戴夫。