C# System.Web.HttpServer是否在ASP.Net WebAPI单元测试中表现良好?

C# System.Web.HttpServer是否在ASP.Net WebAPI单元测试中表现良好?,c#,.net,asp.net-mvc,asp.net-web-api,C#,.net,Asp.net Mvc,Asp.net Web Api,我一直在考虑对ASP.NETWebAPI项目进行单元测试。很明显,我可以根据控制器返回的数据轻松测试控制器获取的方法,但我正在测试头之类的东西 我以前使用过NancyFX,它提供了一个很好的干净测试功能,即使没有设置客户端/服务器,也能返回正确的HTTP响应 我在WebAPI中看到的另一种选择是使用HttpServer和HttpConfiguration在内存中运行服务器 如果我这样做,我想知道是否有人知道它的性能是什么。如果不是那么好,那么不幸的是,它变成了一个集成测试 简单的场景,我想测试响

我一直在考虑对ASP.NETWebAPI项目进行单元测试。很明显,我可以根据控制器返回的数据轻松测试控制器获取的方法,但我正在测试头之类的东西

我以前使用过NancyFX,它提供了一个很好的干净测试功能,即使没有设置客户端/服务器,也能返回正确的HTTP响应

我在WebAPI中看到的另一种选择是使用HttpServer和HttpConfiguration在内存中运行服务器

如果我这样做,我想知道是否有人知道它的性能是什么。如果不是那么好,那么不幸的是,它变成了一个集成测试


简单的场景,我想测试响应头内容类型。如果没有内存配置,我不确定如何在WebAPI中测试它,我在1秒之内运行了80个测试。我认为性能是足够的


注意:如果不在与控制器本身相同的项目中主持api测试,则需要覆盖控制器创建。我使用StructureMap依赖解析程序来实现这一点,该解析程序还实现了
IHttpControllerActivator
接口,因此控制器是从容器而不是默认激活器解析的。

我看到的是类似这样的东西,似乎不需要IHttpControllerActivator???这篇文章略有不同。如果您想测试请求/响应,但不关心实际的控制器操作,那么是的,它会工作。如果要测试apicontroller操作,则需要在api项目本身中承载测试,或者需要覆盖控制器的创建方式。不能使用类似的方法吗。也许我没有正确地理解你。你有任何演示代码吗?这取决于你想测试什么。我假设您希望通过调用url来测试管道。在这种情况下,您需要设置主机的内存环境。如果这不是您想要的,那么只需在没有宿主环境的情况下围绕组件编写一个测试,并直接调用控制器操作。如果您能提供您已经拥有的代码,这将有助于本次讨论。我了解您现在谈论的IHttpControllerActivator,谢谢。我想对于内存中的服务器场景,我必须这样做。在获取回复以读取标题等方面,我认为我必须在内存中使用,除非有其他方法?如果您使用内存,每秒执行80个请求,那么我认为这足以使它成为一个单元测试,而不是集成