C# 谁在测试类项目中实例化了测试类?
我正在写一些集成测试。我正在温莎城堡使用依赖注入 我想使用控制反转容器解析测试类。我不认为解决测试类中的所有依赖关系是我的案例的解决方案 我想做我在WebAPI项目中所做的事情。我实现了IHTTP控制器激活器,它是完全控制控制器生命周期的扩展点。也就是说,我们可以定义如何实例化控制器 我想做同样的测试。但我不明白我必须实现哪个接口。有人能帮我吗 我想我只需要知道哪个是单元测试对应的C# 谁在测试类项目中实例化了测试类?,c#,unit-testing,dependency-injection,castle-windsor,activator,C#,Unit Testing,Dependency Injection,Castle Windsor,Activator,我正在写一些集成测试。我正在温莎城堡使用依赖注入 我想使用控制反转容器解析测试类。我不认为解决测试类中的所有依赖关系是我的案例的解决方案 我想做我在WebAPI项目中所做的事情。我实现了IHTTP控制器激活器,它是完全控制控制器生命周期的扩展点。也就是说,我们可以定义如何实例化控制器 我想做同样的测试。但我不明白我必须实现哪个接口。有人能帮我吗 我想我只需要知道哪个是单元测试对应的ihttpc控制器激活器 编辑 我有一个web api项目要测试。web api项目使用WindsorCastle解
ihttpc控制器激活器
编辑
我有一个web api项目要测试。web api项目使用WindsorCastle解决所有依赖关系。现在我需要测试web api。这就是我正在做的:
public voi MyTest_Ok()
{
//Arrange
var myController = new MyWebApiController();
var result = await myController.DoWork();
//Asserts
}
显然,它不起作用,因为我没有使用castle windsor来解析控制器,所以我没有解析从web api控制器到底部的任何依赖关系
我想我可以换这条线
var myController = new MyWebApiController();
用这样的东西
var myController = windsorContainer.Resolve<MyWebApiController>();
我可以这样做,因为我已经实现了一个定制的
IHttpControllerActivator
答案是:您的测试框架可以。据我所知,没有一个通用的测试框架允许您控制测试类的创建
有关这方面的更多信息,请参见此处:
NUnit提供参数化测试夹具-
因此,理论上,作为一个肮脏的解决方法,您可以通过这个构造函数注入一些依赖项,但它不是为此目的而设计的
一般来说,您必须使用服务定位器。对具有注入依赖项的类进行单元测试将始终模拟依赖项。根本不需要任何注射库。我在你的答案中看到了两个禁忌症。。。1) 我有不同的注入双亲性,每次我只想模拟一个。我想再次定义的只是被嘲笑的双亲,而不是所有的。。。。2) 如果我在我的测试类中解决了这个问题,我必须将温莎城堡引用到我的测试项目中。。。我希望我一直在clearUnit测试只是测试单个类的单个方法。其他任何东西都需要嘲笑。否则你不是在做单元测试。你是对的。。。也许正确的术语是集成测试。。。我更正了我的后可能副本
public class MyWebApiController : ApiController()
{
public InjectedDependency dep { get; set; }
public DoWork()
{
dep.DoWork();
}
}