当Teamcity运行启动自托管Web应用程序的集成测试时,测试失败并显示错误:
System.MissingMemberException: The server factory could not be located for the given input: Microsoft.Owin.Host.HttpListener
引发此错误的代码为:
var webApp = WebApp.Start<Startup>("http://*:52203/")
在Visual Studio中(使用Resharper测试运行程序)执行时,测试运行正常。Teamcity配置为使用JetBrains.BuildServer.NUnitLauncher.exe
可执行文件运行测试。
我看到很多关于此错误的帖子都与有关,因为bin\debug或bin\release文件夹中不存在Microsoft.Owin.Host.HttpListener.dll
。我可以确认此文件(以及附带的.xml文件)都存在于TeamCity buildAgent使用的bin\release文件夹中。bin\debug文件夹不存在。
3条答案
按热度按时间tez616oj1#
我也有同样的问题:在本地运行良好,但在TeamCity代理上失败。
我的测试项目通过nuget引用了Microsoft.Owin.Host.HttpListener
对我有效的方法是在启动Web应用程序之前显式加载Microsoft.Owin.Host.HttpListener dll。
wbgh16ku2#
我找到了这个问题的解决方案,我希望它有帮助:
它无需将 Microsoft.Owin.Host.HttpListener.dll 复制到bin目录即可工作。
oewdyzsn3#
我在我的Powershell脚本中遇到了这个问题,该脚本迭代我们所有的解决方案,并使用MSBuild构建它们,然后在所有测试项目上调用MSTest。该脚本用于在提交到TFS之前在本地构建和测试所有解决方案。在VS中运行测试时不会出现这个问题。我相信这与this question有关。
在测试初始化过程中,将以下代码放在调用WebApp.Start(“http://*:52203/”)之前。