【问题标题】:Capture syslog for test cases捕获测试用例的系统日志
【发布时间】:2016-06-16 18:58:34
【问题描述】:

我正在用 C++ 编写一个命令行工具,它 - 取决于 --logfile 参数 - 记录到 syslog 或给定文件。我想测试这个功能(使用googletest)。

为了测试文件部分,我运行带有和不带有 --logfile 参数的 MyApp::main() 函数并测试日志消息是否出现在文件中。

有没有办法对syslog 进行相同的测试?我可以阅读/var/log/syslog 并希望获得最好的结果,但这不是很便携,因为许多系统将syslog 保留在其他地方。

我正在使用不提供模拟的logging library,所以这不是一个选项。他们在内部使用对 syslog 守护进程 (man(3) syslog) 的调用。有没有一种可移植的方式从这个守护进程获取syslog?还是来自其他地方?

【问题讨论】:

    标签: c++ linux testing googletest syslog


    【解决方案1】:

    您可以使用库预加载 (LD_PRELOAD) 使您的程序在您提供的库中调用 syslog,而不是系统 syslog。然后,您的实现可以记录到您控制的文件中,您可以随后检查该文件。

    【讨论】:

      【解决方案2】:

      我正在使用不提供模拟的日志库,

      所以在某些时候你正在调用正在写入系统日志的库函数。这就是你要嘲讽的地方。在 X 条件下,使用以下参数调用库函数一次... ext。

      一般我在测试中发现当你有A -> B -> C的情况,其中A是你正在编写的代码,B是第三方库,C是输出,你只能测试您正在与 B 进行适当的交互并且无法测试 C。

      当使用第三方代码块时,您基本上相信它会按照它所说的去做(除非它是开源的并且您为他们的代码库编写测试)。

      【讨论】:

        猜你喜欢
        • 2013-12-29
        • 2021-11-21
        • 1970-01-01
        • 2017-05-19
        • 1970-01-01
        • 2014-04-30
        • 2013-01-03
        • 2020-06-08
        • 2020-08-14
        相关资源
        最近更新 更多