使用 FluentAssertions API 4.x 语法迁移 xunit 项目以使用 FluentAssertions v5.x 版本运行
Posted
技术标签:
【中文标题】使用 FluentAssertions API 4.x 语法迁移 xunit 项目以使用 FluentAssertions v5.x 版本运行【英文标题】:Migrating xunit project with FluentAssertions API 4.x syntax to run using FluentAssertions v5.x version 【发布时间】:2019-06-04 12:56:39 【问题描述】:我知道Redefining equivalency 中从 FluentAssertions v4.x 到 v5.x 有一个重大变化 所以,我应该修改:
ShouldBeEquivalenTo ()
到
Should().BeEquivalentTo()
还有很多变化。
我有 xunit 测试项目目标 net45 并开始迁移到多目标 netcoreapp2.1 和 net45。(FluentAssertions v4.x 不支持 netcoreapp2.x)
该项目有许多使用 4.x 旧语法的测试用例,我想尽量减少测试项目中的更改并避免(如果可以的话)修改为新语法。
我的选择是:
首先:我应该手动修改测试用例以支持 v5.x 的新语法
第二:您可能会建议作为替代方案。
你能告诉我最好的路径吗?
【问题讨论】:
【参考方案1】:我确实使用了 Visual Studio 提供的 RegEx 搜索和替换来实现这一点。
【讨论】:
感谢@dennis Doomen 的回答。方法的签名有什么变化吗? 我也得出结论,搜索替换是最简单最有效的选择。 @VidmantasBlazevicius,我想确保方法的签名没有变化。你确定方法的参数没有变化吗? 正如您自己提到的,FA 引入了很多重大更改,主要是确保每个 API 都以Should()
开头,但我已经使用搜索替换转换了大约 20K 测试。因为我是作者……【参考方案2】:
本回答基于@Dennis Doomen的回答
我在 VS2017 中使用了查找/替换正则表达式:
Find: Should(\w+)
Replace: Should().$1
这个正则表达式替换表达式:
ShouldBeEquivalentTo, ShouldAllBeEquivalentTo,
ShouldThrow and ShouldNotThrow
【讨论】:
以上是关于使用 FluentAssertions API 4.x 语法迁移 xunit 项目以使用 FluentAssertions v5.x 版本运行的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 FluentAssertions 在 XUnit 中测试 MediatR 处理程序
如何使用FluentAssertions在XUnit中测试MediatR处理程序
FluentAssertions Throw() 未列出使用