发送到应用程序的CTRL-C的单元测试

Abr*_*ile 9 c++ testing unit-testing signals

我正在开发一个处理CTRL-C的应用程序.我正在生成一个信号处理程序来正常关闭线程和其他资源.

我想在我的应用程序可能的不同场景中测试CTRL-C.我知道如何为测试中的进程设置那些,但是我需要一种方法(在运行的测试套件的代码中)来检查是否达到了这个条件,以便完全调用CTRL-C.

我在Linux工作,我希望在帮助下自动运行我的测试CPPUNIT.在我的每个CTRL-C测试中,我启动该过程,然后使用kill具有该过程的PID的函数发送CTRL-C .

我正在使用共享内存; 一旦测试的应用程序达到我感兴趣的条件或我想发送CTRL-C的点,我就会在共享内存中写入标记或状态.同时,在不同进程中运行的测试套件代码连续轮询共享内存,一旦它读取所需状态,它就会发送CTRL-C/kill.

您认为这是一种好方法还是通常以更好/更有效的方式完成?

亲切的问候

AFG

kri*_*iss 6

首先测试接收到某些外部信号时的行为看起来不像单元测试,而是像功能测试一样.

此外,你这样做的方式也听起来太复杂,可能会强制某种同步并隐藏一些行为.

另一方面,对于这种测试,我真的没有更好的建议,这通常是通过外部工具以更少控制的方式完成的.

  • @ abruzzo-forte-e-gentile:单元测试是关于使用您的编程语言内部API调用某些函数.这不是你的测试所做的.功能测试确实是关于用户(即:外部世界)与您的程序的交互.获取信号是外部世界的交互,你甚至可以称之为残酷的GUI,例如在没有足够内存或磁盘空间的系统上运行程序.作为功​​能测试并不意味着它不重要或者不想将它放在测试套件中. (2认同)