C++ Catch2-输出到控制台和文件

C++ Catch2-输出到控制台和文件,c++,catch-unit-test,C++,Catch Unit Test,我可以使用-o junit--output Catch_results.xml运行Catch可执行文件来生成xml报告 是否有某种方法既可以生成xml报告,又可以生成控制台输出?假设您要求在文件中使用JUnit输出,并且在stdout使用标准控制台报告程序,那么就没有办法做到这一点 Catch2过去支持多个报告器,但不支持让它们将输出写入单独的文件/输出,这意味着该功能不可用,直到将来某个时候才被删除。假设您要求在文件中有JUnit输出,在标准控制台报告器上有标准控制台报告器,没有办法做到这一点

我可以使用
-o junit--output Catch_results.xml
运行Catch可执行文件来生成xml报告


是否有某种方法既可以生成xml报告,又可以生成控制台输出?

假设您要求在文件中使用JUnit输出,并且在stdout使用标准控制台报告程序,那么就没有办法做到这一点


Catch2过去支持多个报告器,但不支持让它们将输出写入单独的文件/输出,这意味着该功能不可用,直到将来某个时候才被删除。

假设您要求在文件中有JUnit输出,在标准控制台报告器上有标准控制台报告器,没有办法做到这一点


Catch2过去支持多个报告器,但不支持让他们将输出写入单独的文件/输出,这意味着该功能无法使用,并且在将来某个时候才被删除。

您可以实现自己的
侦听器。

侦听器可以为某些事件(测试套件开始/结束、测试用例开始/结束,…)实现“事件处理程序”。在这些事件处理程序中,您可以输出到控制台(使用
printf
而不是
cout
,因为测试运行程序可以拦截
cout

而且,最重要的是,您的
侦听器可以与报告器一起运行


您可以实现自己的
侦听器

侦听器可以为某些事件(测试套件开始/结束、测试用例开始/结束,…)实现“事件处理程序”。在这些事件处理程序中,您可以输出到控制台(使用
printf
而不是
cout
,因为测试运行程序可以拦截
cout

而且,最重要的是,您的
侦听器可以与报告器一起运行


如果您使用的是类unix环境,则可以输出到标准输出,然后使用
tee
将输出分叉到文件。在Windows上,:
powershell“\myTestExe-o junit | tee catch\u results.xml”
当我尝试此操作时,文件catch\u results.xml仅包含“-ojunit”。您的参数似乎不正确,它应该是
--reporter junit--out catch_results.xml
如果您使用的是类似unix的环境,您可以输出到stdout,并使用
tee
将输出分叉到文件。在Windows上,:
powershell“\myTestExe-o junit | tee catch_results.xml”
当我尝试此操作时,catch_results.xml文件只包含“-ojunit。您的参数似乎不正确,应该是
--reporter junit--out catch_results.xml