使用 `Xunit.DependencyInjection` 改造测试项目 (2)

使用 `Xunit.DependencyInjection` 改造测试项目

这个测试项目使用了老版本的 AutoMapper,每个有使用到 AutoMapper 的地方都会需要在测试用例里调用一下注册 AutoMapper mapping 关系的方法来注册 mapping 关系,因为 Register 方法里直接调用的Mapper.Initialize 方法注册 mapping 关系,多次调用的话会抛出异常,所以每个测试用例方法里用到 AutoMapper 的都有这个一段恶心的逻辑

第一次修改,我在 Register 方法做一个简单的改造,把 try...catch 移除掉了:

使用 `Xunit.DependencyInjection` 改造测试项目

但是这样还是很不爽,每个用到 AutoMapper 的测试用例还是需要调用一下 Register 方法

使用 Xunit.DepdencyInjection 之后就可以只在 Startup 中的 Configure 方法里注册一下就可以,只需要调用一次就可以了

使用 `Xunit.DependencyInjection` 改造测试项目

后面我们把 AutoMapper 升级了,使用依赖注入模式使用 AutoMapper,改造之后的使用

使用 `Xunit.DependencyInjection` 改造测试项目

使用 `Xunit.DependencyInjection` 改造测试项目

直接在测试用例的类中注入需要的服务 IMapper 即可

集成测试

集成测试也是类似的,集成测试我用自己的项目作为一个示例

我的集成测试项目最初是用 xunit 里的 CollectionFixture 结合 WebHost 来实现的(从 2.2 更新过来的,),在 .net core 3.1 里可以直接配置 WebHostedService 就可以了,而 Xunit.DependencyInjection 是基于 微软的 GenericHost 的所以,也会比较简单的做集成。

在 Startup 里 通过 ConfigureHost 方法配置 IHostBuilder 的扩展方法 ConfigureWebHost ,注册测试需要的服务,在测试示例类的构造方法中注入服务即可

使用 `Xunit.DependencyInjection` 改造测试项目

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywzfs.html