VerifyTests/Verify 项目中的文件命名规范详解
概述
VerifyTests/Verify 是一个用于.NET测试验证的库,它通过对比实际结果与预期结果来验证测试的正确性。在这个过程中,文件命名规范起着至关重要的作用,因为它决定了验证文件的生成方式和组织结构。本文将深入解析Verify项目中的文件命名机制,帮助开发者更好地理解和应用这一功能。
基本命名格式
Verify使用以下基本格式来命名验证文件:
{目录}/{测试类名}.{测试方法名}_{参数}_{UniqueFor1}_{UniqueFor2}_{UniqueForX}.verified.{扩展名}
这个格式由多个部分组成,每个部分都可以根据需要进行自定义。
目录配置
默认行为
默认情况下,验证文件会生成在包含测试的目录中。
自定义目录
可以通过以下方式自定义验证文件的存储目录:
实例方式
var settings = new VerifySettings();
settings.UseDirectory("CustomDirectory");
await Verify("valueUseDirectory", settings);
流式API方式
await Verify("valueUseDirectoryFluent")
.UseDirectory("CustomDirectory");
以上两种方式都会生成类似 CustomDirectory/TypeName.MethodName.verified.txt
的文件。
测试类名配置
默认行为
默认使用包含测试的类名作为文件名的一部分。
自定义类名
可以通过以下方式自定义类名部分:
实例方式
var settings = new VerifySettings();
settings.UseTypeName("CustomTypeName");
await Verify("valueUseTypeName", settings);
流式API方式
await Verify("valueUseTypeNameFluent")
.UseTypeName("CustomTypeName");
这会生成类似 CustomTypeName.MethodName.verified.txt
的文件。
测试方法名配置
默认行为
默认使用测试方法名作为文件名的一部分。
自定义方法名
可以通过以下方式自定义方法名部分:
实例方式
var settings = new VerifySettings();
settings.UseMethodName("CustomMethodName");
await Verify("valueUseMethodName", settings);
流式API方式
await Verify("valueUseMethodNameFluent")
.UseMethodName("CustomMethodNameFluent");
这会生成类似 TestClass.CustomMethodNameFluent.verified.txt
的文件。
同一方法中的多次验证
UseMethodName
特别适用于同一测试方法中需要多次验证的情况:
[Fact]
public Task MultipleCalls() =>
Task.WhenAll(
Verify("Value1MultipleCalls")
.UseMethodName("MultipleCalls_1"),
Verify("Value1MultipleCalls")
.UseMethodName("MultipleCalls_2"));
完全自定义文件名
使用UseFileName
要完全控制文件名,可以使用 UseFileName
:
实例方式
var settings = new VerifySettings();
settings.UseFileName("CustomFileName");
await Verify("valueUseFileName", settings);
流式API方式
await Verify("valueUseFileNameFluent")
.UseFileName("CustomFileNameFluent");
这会生成类似 CustomFileNameFluent.verified.txt
的文件。
注意:
- 不能与
UseTypeName
、UseMethodName
或UseParameters
同时使用 - 可以与
UseDirectory
和UniqueFor*
组合使用
UniqueFor特性
UniqueFor*
系列方法允许在文件名中添加特定分隔符,用于区分不同的运行环境或配置。
支持的UniqueFor方法
UniqueForRuntime()
- 根据运行时环境区分UniqueForAssemblyConfiguration()
- 根据程序集配置区分UniqueForRuntimeAndVersion()
- 根据运行时环境和版本区分UniqueForArchitecture()
- 根据系统架构区分UniqueForOSPlatform()
- 根据操作系统平台区分
示例结果
对于多目标框架项目,可能会生成以下文件:
UniqueForSample.Runtime.Core.verified.txt
UniqueForSample.Runtime.Net.verified.txt
UniqueForSample.RuntimeAndVersion.Core3_0.verified.txt
UniqueForSample.RuntimeAndVersion.Net4_8.verified.txt
UniqueForSample.Architecture.X86.verified.txt
UniqueForSample.Architecture.X64.verified.txt
文件扩展名配置
默认行为
默认文件扩展名是 .txt
,生成的文件名类似 TestClass.TestMethod.verified.txt
。
自定义扩展名
可以在方法级别或类级别覆盖默认扩展名:
[Fact]
public Task AtMethod() =>
Verify(
target: """
<note>
<to>Joe</to>
<from>Kim</from>
<heading>Reminder</heading>
</note>
""",
extension: "xml");
这会生成 .verified.xml
文件而不是默认的 .verified.txt
。
最佳实践
- 保持一致性:在项目中统一命名规范,便于团队协作和维护
- 合理使用UniqueFor:根据实际需要选择适当的UniqueFor方法,避免过度区分
- 语义化命名:为自定义文件名和方法名选择有意义的名称
- 考虑跨平台兼容性:文件名应避免使用特殊字符,确保在不同操作系统上都能正常工作
通过合理利用Verify的文件命名功能,可以大大提高测试结果的可读性和可维护性,特别是在复杂的测试环境和多配置场景下。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考