Asp.net 同一解决方案中的WebAPI应用程序和集成测试

Asp.net 同一解决方案中的WebAPI应用程序和集成测试,asp.net,visual-studio-2013,asp.net-web-api,nunit,Asp.net,Visual Studio 2013,Asp.net Web Api,Nunit,我有一个WebAPI应用程序和一个集成测试套件,用于通过HTTP调用API的应用程序。目前,我在visual studio 2013的一个实例中运行集成套件,并在另一个实例中手动启动WebAPI应用程序,以便在IIS Express上运行 是否可以配置VS2013,使测试套件和应用程序在同一个解决方案中,只需运行我正在使用的nunit和resharper测试套件,在该测试套件和resharper运行时,它将负责构建和启动web应用程序?您可以在一个解决方案中配置WebAPI。然后在测试夹具设置中

我有一个WebAPI应用程序和一个集成测试套件,用于通过HTTP调用API的应用程序。目前,我在visual studio 2013的一个实例中运行集成套件,并在另一个实例中手动启动WebAPI应用程序,以便在IIS Express上运行


是否可以配置VS2013,使测试套件和应用程序在同一个解决方案中,只需运行我正在使用的nunit和resharper测试套件,在该测试套件和resharper运行时,它将负责构建和启动web应用程序?

您可以在一个解决方案中配置WebAPI。然后在测试夹具设置中,您将启动主机并在每次测试后将其拆除。然后,您的所有测试都将被配置为访问本地托管的API。

您可以在一个数据库中配置WebAPI。然后在测试夹具设置中,您将启动主机并在每次测试后将其拆除。然后,您的所有测试都将配置为命中本地托管的API。

我真的不明白为什么VS不支持这一点。这似乎是一个非常普遍的问题

无论如何我找到了一个丑陋的解决办法。 打开您的解决方案两次,这意味着使用相同的解决方案打开两个VS实例:

在第一个VS中: 在调试模式下运行Web API项目 在第二个例子中: 卸载Web API项目测试必须在运行之前生成,如果加载Web API项目,生成过程将失败,因为无法覆盖输出DLL-其他窗口正在使用它们 运行单元测试!:
我真的不明白为什么VS不支持这个。这似乎是一个非常普遍的问题

无论如何我找到了一个丑陋的解决办法。 打开您的解决方案两次,这意味着使用相同的解决方案打开两个VS实例:

在第一个VS中: 在调试模式下运行Web API项目 在第二个例子中: 卸载Web API项目测试必须在运行之前生成,如果加载Web API项目,生成过程将失败,因为无法覆盖输出DLL-其他窗口正在使用它们 运行单元测试!:
听起来很理想,但是这些说明假设您将在作为入口点的项目中定义控制器等。我有一个用于测试套件的项目和一个用于web应用程序的项目,所以不确定这是否可行?也许它会,我只需要弄清楚它是如何连接在一起的。你可以将控制器放在一个单独的程序集中,只需编写一个自定义代码,如下所示:。这将允许您从控制器所在的实际程序集加载控制器,而不是使用包含self-host.Great的当前单元测试程序集。我使用的是StructureMap.MVC,这一切都会通过自定义解析器的虚拟化正确初始化,还是我必须显式地初始化?只要调用方法引导DI,它就会工作。我怀疑OWIN self-host使用时无法正常工作,MVC5也无法自宿主:听起来很理想,但是,这些说明假定您将在作为入口点的项目中定义控制器等。我有一个用于测试套件的项目和一个用于web应用程序的项目,所以不确定这是否可行?也许它会,我只需要弄清楚它是如何连接在一起的。你可以将控制器放在一个单独的程序集中,只需编写一个自定义代码,如下所示:。这将允许您从控制器所在的实际程序集加载控制器,而不是使用包含self-host.Great的当前单元测试程序集。我使用的是StructureMap.MVC,这一切都会通过自定义解析器的虚拟化正确初始化,还是必须显式初始化?只要调用该方法来引导DI,它就会工作。我怀疑OWIN self-host使用时无法正常工作,MVC5也无法自宿主: