.NET 8 Azure Functions单元测试:是否需添加SUT的NuGet依赖到测试项目?
.NET 8 Azure Functions单元测试依赖问题解答
测试项目要不要手动复制被测项目的NuGet引用?
不用费劲手动添加。只要你的测试项目通过项目引用关联了ABC.Functions,NuGet会自动把被测项目的间接依赖同步过来。除非是私有包或者你特意禁用了依赖传递,那才需要手动添加,正常情况自动同步就够。模拟SUT时依赖Azure Functions的NuGet包,是设计缺陷吗?
得看具体情况:- 如果是模拟
HttpRequest、ILogger这类Azure Functions提供的抽象接口,这完全没问题——这些是函数运行的核心依赖,测试时肯定要模拟输入输出。 - 但要是你直接模拟Azure服务的具体实现类(比如直接造
BlobClient的实例而非依赖它的抽象接口),那确实是设计有问题:你的函数应该依赖抽象而非具体实现,这样测试时用Moq这类框架就能轻松造模拟对象,不需要依赖Azure的具体包。
- 如果是模拟
测试项目引用被测程序集的NuGet依赖,正常吗?
太正常了。测试项目本来就要和被测代码在一致的环境下运行,依赖被测项目的基础库是合理操作。比如你要测试用了Microsoft.Azure.WebJobs的函数,测试项目必须有这个包才能识别函数的类型、接口,这完全没毛病。
额外提醒:要是想精简测试项目的依赖,可以只引用必要的抽象包(比如Microsoft.Azure.WebJobs.Abstractions),而不是完整的SDK包,具体看你的测试场景需求。
内容的提问来源于stack exchange,提问作者nandu
相关产品推荐
相关产品推荐

