本文档概述了 Shadowsocks Windows 客户端中使用的测试基础设施和实践。它涵盖了测试框架、当前测试覆盖率、如何运行测试以及贡献新测试的指南。
有关从源代码构建项目的信息,请参阅从源代码构建。
Shadowsocks Windows 使用微软的 Visual Studio 测试框架 (MSTest) 进行单元测试。这通过 Microsoft.VisualStudio.TestTools.UnitTesting 命名空间实现,该命名空间提供了用于创建和运行单元测试的属性、断言和测试运行器。
测试组织在解决方案中的一个独立测试项目中
目前,测试项目包含
test/ - 包含测试代码的目录UnitTest.cs - 包含各种组件的测试方法测试类使用 [TestClass] 属性标记,而单个测试方法则使用 [TestMethod] 属性,遵循标准 MSTest 约定。
目前的测试覆盖率主要集中在热键系统
| 测试方法 | 描述 | 测试组件 |
|---|---|---|
TestHotKey2Str | 测试从按键组合到字符串表示的转换 | Controller.Hotkeys.HotKeys |
TestStr2HotKey | 测试从字符串表示到热键对象的转换 | Controller.Hotkeys.HotKeys |
此方法测试热键组合(由一个键和修饰键组成)转换为其字符串表示的功能。它验证了修饰键(Ctrl、Alt、Shift)与不同键的各种组合是否正确格式化为字符串。
此方法测试将字符串表示转换回 HotKey 对象的功能。它确保“Ctrl+A”等字符串能够正确解析为相应的键和修饰键组合。
运行测试
或者,您可以从命令行运行测试
dotnet test
项目中典型的测试工作流程遵循以下模式
为 Shadowsocks Windows 贡献代码时,建议为新功能添加测试。以下是添加新测试的方法
test 目录中确定适当的测试类或创建一个新类Test 为前缀的测试方法[TestMethod] 属性编写 Shadowsocks Windows 测试时,请考虑以下最佳实践
可以从额外测试覆盖中受益的组件包括
ShadowsocksController 类Listener、TCPRelay 和 UDPRelay 类Encryption 命名空间中的加密/解密逻辑除了单元测试,项目还将受益于验证组件之间交互的集成测试,例如
如果在运行测试时遇到问题