问题标签 [approval-tests]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 关于打印 STL 容器以进行认可测试的公约
我正在使用优秀的ApprovalTests.cpp库编写批准测试。该库自动生成函数结果的“快照”。T
使用ostream& operator<< (T val)
. _
此运算符一直是用于将某些值格式化为文本表示的 C++ 约定。虽然原始类型支持此运算符并且您可以为自定义类型编写自己的实现,但对于 STL 容器(如std::vector
.
您可以实现自己的,甚至使用其他库,如fmt
or pprint
。以下是一些具有类似输出的示例。我使用泛型类型STREAM
作为参数,而不是ApprovalTests.cpp 推荐ostream
的具体类型,但这个想法没有改变。
for 循环
ostream_iterator
fmt
带<fmt/ranges.h
标题:
漂亮的印刷品
https://github.com/p-ranav/pprint
cxx-prettyprint
只需包含prettyprint.hpp,它就适用于 STL 容器。
这似乎是最简单的解决方案,但与其他解决方案有相同的问题,它可能会破坏其他代码。
大会?
在对 Rust 有一些经验之后,我发现对每个 C++ STL 容器都这样做很乏味。这样做可能会破坏其他代码,例如,相同的运算符已为向量重载。
在 Rust 中,您只需将#[Debug]
要struct
格式化的文本添加到文本中,它就可以自动转换为文本表示形式,或者如果您需要一些非规范表示形式,您可以自己实现特征。结构作者有责任定义其Debug
实现。这就是为什么 Rust 标准库中的每个容器都有自己的Debug
实现。
我在问 C++ 中是否存在一些约定,或者有一些类似的标准提案。它可能对批准测试很有用,比如在我的例子中,但也适用于日志记录或调试(调试器可以使用此格式化程序向用户显示变量值)。
continuous-integration - 我应该使用批准测试作为 CI 测试运行的一部分吗?
使用 CI 和 ApprovalTests 的常用方法是什么?我遇到了一个问题,因为对批准文件的访问被拒绝。所以我开始怀疑是否应该在 CI 测试运行中使用 ApprovalTests。CI 方案批准文件的推荐位置是什么?
我不想在chmod -R a+x
这里和那里
c# - 如何正确使用批准测试来比较 2 个 excel 文件
我有一个自动化测试场景,其中正在比较 2 个 excel 文件。这目前正在使用 ApprovalTests 验证方法完成。Excel 正在转换为字符串并进行比较。
首次运行此测试时,由于没有任何批准的文件而失败。我将收到的文件重命名为已批准的文件并再次执行。它通过了。
我无法理解的是,这个测试在整个套件中运行时总是失败,但在单独和本地运行时总是通过。
有没有人遇到过这个问题?这种场景可以自动化的任何其他方式?
提前致谢!
visual-studio - 如何让 ApprovalTests 创建 UTF-8 文件
我使用 Visual Studio 2019 并添加了 ApprovalTests nuget 包。配置测试类[UseReporter(typeof(DiffReporter))]
并完成批准Approvals.Verify(result)
除了文件编码之外,它工作正常。在 VS 中,我打开了两个文件。但我也收到警告:“这些文件具有不同的编码。左文件:带有签名的 Unicode (UTF-8)。右文件:西欧 (Windows)。您可以通过使用编码 Unicode ( UTF-8) 带签名。”
我显然可以通过使用不同的编码保存它来手动更改正确的文件。这将使比较接受结果,但我将在两个窗口中都有一个看起来很奇怪的内容。这使得它的可读性大大降低。示例:简单的加号与 \u002B 交换
在批准之前调试代码时,我可以验证所有字符的结果是否符合我的预期。那会发生什么?我的印象是 ApprovalTests 框架强制执行我无法控制的编码。