本文介绍如何在 Visual Studio 命令和 GitHub Copilot 的帮助下使用 xUnit 框架在 C# 中生成单元测试和测试项目。 结合使用 Visual Studio 与 GitHub Copilot 极大地简化了生成和编写单元测试的过程。
创建测试项目
假设有一个ProductService
GetProductById
依赖于接口IProductDataStorage
的方法ICacheClient
的类。
public class ProductService(
IProductDataStorage productDataStorage,
ICacheClient cacheClient)
{
public async Task<Product?> GetProductById(int productId)
{
var product = await cacheClient.GetProduct(productId);
if (product is not null)
{
return product;
}
product = await productDataStorage.GetProduct(productId);
if (product is not null)
{
await _cacheClient.SetProduct(product);
}
return product;
}
}
若要生成测试项目和存根方法,请执行以下步骤:
- 选择该方法。
- 右键单击并选择“ 创建单元测试”。
在“创建单元测试”对话框中,从“测试框架”下拉菜单中选择 xUnit。
注释
“创建单元测试”命令默认为 MSTest 框架。 但是,由于此示例使用 xUnit,因此需要安装 Visual Studio 扩展 xUnit.net.TestGenerator2022。
- 如果还没有测试项目,请选择 “新建测试项目 ”或选择现有的测试项目。
- 如有必要,请为命名空间、类和方法名称指定模板,然后单击“ 确定”。
几秒钟后,Visual Studio 将拉取所需的包,你将获得一个生成的 xUnit 项目,其中包含所需的包和结构、对要测试的项目的引用,以及 ProductServiceTests
类和存根方法。
自行生成测试
再次选择要测试的方法。
右键单击并选择“ 询问 Copilot”。
输入简单的提示,例如:
“使用 xunit、nsubstitute 生成单元测试,并将结果插入 #ProductServiceTests 文件中。
在键入
#
字符时,您需要选择您的测试类。
小窍门
对于快速搜索,最好 ProductServiceTests
在单独的选项卡中打开。
执行提示,单击“ 接受”,Copilot 将生成测试代码。 之后,剩下的就是安装必要的软件包。
安装包后,可以运行测试。 此示例处理了第一次尝试:Copilot 知道如何使用 NSubstitute,并且所有依赖项都通过接口定义。