【发布时间】:2021-04-14 12:37:28
【问题描述】:
我想为一些实现给定接口的类动态生成理论。
这时候,我使用自省来获取实现类的类型:
IEnumerable<Type> srvTypes = typeof(BaseService<>).Assembly.GetTypes()
.Where(p => typeof(IBaseService).IsAssignableFrom(p) && !p.IsAbstract);
IEnumerable<IBaseService> srvs = srvTypes.Select(st => Activator.CreateInstance(st));
然后我可以运行服务的每个方法,如果它没有引发异常,我认为测试正常:
Assert.All(srvs, srv => srv.GetX());
Assert.All(srvs, srv => srv.DoY());
Assert.All(srvs, srv => srv.SyncZ());
对于这些行,我只会得到 3 个测试结果,但我希望每个服务都有一个。
有没有办法告诉 xUnit 为每个实现类运行测试?
注意:我不想在理论属性中写每个类名,它应该是动态的。
【问题讨论】: