Testing Compile-time Constructs Within a Runtime Unit Testing Framework
1.37 MB
50 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
英语 | .pdf | 3 |
摘要 | ||
文档讨论了在运行时单元测试框架中测试编译时构造的方法。由于错误的高成本,严格的测试是必要的,特别是在使用C++14开发安全关键型应用时。文档介绍了一种通过使用GoogleTest库和自定义宏(如STATIC_TEST、SHOULD_NOT_COMPILE和SHOULD_NOT_COMPILE_WITH_MESSAGE)的方法来测试代码是否可编译。这种方法通过生成自定义测试文件并将其传输到编译器,然后解释编译结果来验证代码的正确性。如果编译成功,测试将失败并显示错误信息;如果编译失败,测试将成功。这种方法与现有的流程集成,通过外部脚本处理所有工作,从而能够捕获以前无法捕获的错误,最终使最终产品更安全。 | ||
AI总结 | ||
《Testing Compile-time Constructs Within a Runtime Unit Testing Framework》
这篇文档探讨了如何在运行时单元测试框架中测试编译时结构的可编译性,主要针对安全关键型应用的开发需求。以下是核心内容的总结:
### 背景与问题
- Errors have a high cost, so rigorous testing is a must
- 在安全关键型应用中,编译时错误的成本很高,因此需要严格的测试。
- 作者使用C++14开发安全关键应用,需确保代码的可靠性。
-随着对编译时多态和检查的使用增加,如何严格测试代码的可编译性成为一个关键问题。
### 解决方案
- 提出了一个基于GoogleTest库的自定义测试框架,用于测试代码的可编译性。
- 通过自定义fixture和宏(`STATIC_TEST`、`SHOULD_NOT_COMPILE`、`SHOULD_NOT_COMPILE_WITH_MESSAGE`),隐藏了复杂的实现细节。
- 这些宏通过外部脚本生成自定义测试文件,并将其提交给编译器,解释编译结果。
### 关键机制
- **STATIC_TEST**:定义一个测试用例,检查代码是否按照预期编译失败。
- **SHOULD_NOT_COMPILE**:验证指定代码在编译时失败。
- **SHOULD_NOT_COMPILE_WITH_MESSAGE**:进一步检查编译失败时的错误消息是否匹配预期模式。
- 如果编译成功,测试失败;如果编译失败,测试成功(或验证错误消息匹配)。
- 外部脚本负责生成测试文件、调用编译器并解释结果。
### 实施与优势
- 将测试集成到现有工作流中,可以动态生成编译数据库。
- 通过解析编译结果,能够捕捉之前无法检测到的错误。
- 最终产品更安全,可靠性更高。
- 提供了一个概念验证的实现,证明了该方法的可行性。
### 总结
文档提出了一种在运行时单元测试框架中测试编译时结构可编译性的方法,通过与GoogleTest库的集成和自定义宏脚本,实现了对代码可编译性的严格测试。这一方法提高了代码的安全性和可靠性,为安全关键型应用的开发提供了重要保障。 |
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
38 页请下载阅读 -
文档评分