Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 谁在测试类项目中实例化了测试类?_C#_Unit Testing_Dependency Injection_Castle Windsor_Activator - Fatal编程技术网

C# 谁在测试类项目中实例化了测试类?

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解

我正在写一些集成测试。我正在温莎城堡使用依赖注入

我想使用控制反转容器解析测试类。我不认为解决测试类中的所有依赖关系是我的案例的解决方案

我想做我在WebAPI项目中所做的事情。我实现了IHTTP控制器激活器,它是完全控制控制器生命周期的扩展点。也就是说,我们可以定义如何实例化控制器

我想做同样的测试。但我不明白我必须实现哪个接口。有人能帮我吗

我想我只需要知道哪个是单元测试对应的
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();
    }
}