- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我知道默认情况下报告被定向到标准错误,所以必须将它重定向到一个文件。我的问题是我们应该在全局范围内这样做吗?这似乎对我不起作用。
这是我试过的-
struct MyConfig
{
MyConfig()
: testReport("fileName.log")
{
if(!testReport.fail())
original = std::cerr.rdbuf(testReport.rdbuf());
}
~MyConfig()
{
cerr.rdbuf(original);
testReport.close();
}
ofstream testReport;
streambuf* original;
};
BOOST_GLOBAL_FIXTURE(MyConfig);
运行测试后,仅在控制台上报告输出,尽管使用给定名称创建了一个 0kb 文件。
最佳答案
使用 Boost 1.44.0(可能还有更高版本),您需要以下代码来创建一个全局夹具,该夹具将测试程序的输出重定向到一个以包含测试的主测试套件命名的文件(参见 Boost Documentation )
#include <boost/test/unit_test.hpp>
#include <string>
#include <fstream>
struct LogToFile
{
LogToFile()
{
std::string logFileName(boost::unit_test::framework::master_test_suite().p_name);
logFileName.append(".xml");
logFile.open(logFileName.c_str());
boost::unit_test::unit_test_log.set_stream(logFile);
}
~LogToFile()
{
boost::unit_test::unit_test_log.test_finish();
logFile.close();
boost::unit_test::unit_test_log.set_stream(std::cout);
}
std::ofstream logFile;
};
BOOST_GLOBAL_FIXTURE(LogToFile);
在此示例中,logFile
不是 Steve Townsend 提供的答案中的静态成员,因为将 logFile
声明为静态成员会导致错误生成 XML,并且以这种方式访问夹具结构不是线程安全的。
但是,Boost 1.44.0 中似乎存在一个错误,如果
logFile
不是固定结构的静态成员(可能与我之前提到的错误相同),该错误也会导致生成不正确的 XML 输出。要解决此问题,在析构函数中关闭文件流以生成有效的 XML 之前需要行
logFile << "</TestLog>" << std::flush;
。
感谢@Wracky(下面的评论),我用 logFile << "</TestLog>" << std::flush;
替换了 boost::unit_test::unit_test_log.test_finish();
行,这是比手动编写标签更简洁的解决方案。
注意:测试使用以下参数运行:--output_format=XML --log_level=all --report_level=no
。这允许将生成的 XML 文件与 xUnit plugin 一起用于 continuous integration server Jenkins。
关于c++ - 使用 BOOST.Test 在文件中生成测试报告的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3786639/
我们正在将我们的测试报告数据(单元、回归、集成等)从 XML 格式迁移到数据库格式,以便更好地进行分析。目前,我们的大部分测试分析都是使用 CruiseControl.NET 仪表板完成的,但这主要限
我已经建立了大量的 Protractor 测试套件,我希望将它实现到 jenkins 中,以便在每个新版本中运行这些测试。要处理输出,仅将其输出到文本文件已经不够了,例如protractor conf
是否可以在 eclipse(kepler) 中以 html 形式提供 JUnit 测试报告数据,其中显示了许多测试用例以及通过了多少个,测试用例的意图是什么等。 最佳答案 是的,可以使用 Ant ec
我的团队目前正在用 Ruby 构建一个 WebDriver 测试框架。我们正在寻找一种生成测试完成报告的方法,以便可以通过电子邮件将其发送出去,最好包括单独的测试和测试验证点结果。 作为我所说的测试验
我工作的公司正在评估不同的 CI/CD 系统,我们尝试了 GoCD (v17.4)、Jenkins 2 (v2.7) 和 Concourse (v3.2.1)。 我们喜欢 Concourse,但一个很
嗨,我正在尝试通过在命令提示符下提供以下命令来获取文件中的 Protractor 测试结果。 Protractor conf.js > location\result.txt 在那里我可以看到 Pro
当分片测试(也称为并行运行测试;即:shardTestFiles: true)时,Protractor 不会在所有测试完成时报告结果,而是报告每个文件完成后。 有人有解决方法吗? 我尝试过使用内联 p
在一些博客中,我发现了以下生成 jacoco 报告的任务: task jacocoTestReport(type: JacocoReport, dependsOn: "testDebugUnitTes
使用 ant 可以运行 JUnit 测试并生成多种格式的测试报告:文本、HTML、XML ..并且经常通过电子邮件将测试结果发送给负责人,所以我的问题是:是否可以使用 Junit 生成的 xml 文件
我有一个脚本调用 run_test.py,内容如下:- if __name__ == '__main__': nose.main(argv=sys.argv) 运行我所有的测试就像这样做一样简
我可以得到 android 测试的 gradle 测试报告吗?我想直接在终端中获得报告。每次测试通过、失败或跳过时,我都希望在终端中打印包含测试名称和状态的报告。 对于单元测试,我可以将其添加到 gr
可以用SQL实现同样的功能,就是麻烦了点。 ? 1
我正在使用 Jenkins 和 Ant。我在 Jenkins 中运行 Selenium 和 JUnit 测试。我能够生成 HTML 报告和电子邮件给开发人员。我想在电子邮件中发布 Jenkins 单元
如果我在 protractor 上运行测试在我的机器上正确生成了报告并保存了屏幕截图。我现在的目标是进行自动化测试,我将使用 docker . 我的 docker-compose.yml看起来像这样
我使用的是 Visual Studio 2017、Visual Studio 测试工具和 VSTFS v.15。我设法使用 Selenium 截取了屏幕截图,目前将它们存储在“TestLogsDir”
我有 Maven Java 项目的 JUnit XML 报告,而不是源文件。我希望 Sonarqube 4.5.7 通过执行以下命令来发布这些报告:“mvn sonar:sonar”。 Sonarqu
我有一个简单的 Scala 项目,使用 sbt 构建, 用 JUnit 测试过。项目插入Shippable CI,在CI界面,可以看到Tests运行构建时的选项卡。眼见"No test reports
在我的 gradle 构建脚本中,我有一个部分说在我运行任务时生成测试报告:jacocoTestReport jacocoTestReport { group = "build" re
from selenium import selenium import unittest, time, re import HTMLTestRunner class Untitled(unittes
我正在尝试将 Protractor 测试结果导出到 xml 文件,为此我已经使用 安装了 jasmine-reporters npm install -g jasmine-reporters。 Pro
我是一名优秀的程序员,十分优秀!