单元测试中的测试连接丢失(在节俭的C ++应用程序中或一般情况下)

时间:2019-03-31 13:56:16

标签: c++ unit-testing tcp connection thrift

假设我的节俭客户只会lose connection without any warning,这并不疯狂。在这种情况下,我必须检测到该情况并重新连接到服务器。

我有一个多线程的C ++程序(客户端和服务器),它们使用节俭并带有无锁的对象池等。这是一个具有锁和睡眠的复杂系统,需要进行良好的测试,我需要在单元测试中模拟失去连接。我的测试使用回送(127.0.0.1)连接到节俭服务器。有没有一种方法可以模拟丢失的连接以查看我的软件的反应并对其进行测试?

我使用的是Linux,Ubuntu 18.04。我不介意使用系统调用来欺骗我的测试。

如果您需要任何其他信息,请询问。我不确定是否可以提供更多信息。

1 个答案:

答案 0 :(得分:0)

由于您的问题被标记为单元测试,因此我将提供一些与单元测试有关的评论。但是,您当前正在做的似乎是集成测试。

在单元测试中,您专注于与组件无关的代码测试。也就是说,与其使用Thrift库一起测试代码,不如使用该库的模拟。您的代码应该无法区分是与实际库一起使用还是与模拟库一起使用。模拟的行为由测试代码控制。这使您的测试代码有很大的自由度来练习您感兴趣的各种场景。如果您想了解更多有关它的信息,请搜索“模拟”,“依赖注入”和“控制反转”,然后您将找到很多信息。

也就是说,结合使用Thrift库进行集成测试当然没有错:对某些代码进行全面测试将需要单元测试和集成测试。只是两者的目标和方法不同。