我的单元测试项目中有以下方法:
[TestMethod]
[HostType("ASP.NET")]
[UrlToTest("http://localhost:3418/Web/SysCoord/ChooseEPA.aspx")]
[AspNetDevelopmentServerHost("%PathToWebRoot%")]
public void TestMethod1()
{
Page page = TestContext.RequestedPage;
Assert.IsTrue(false, "Test ran, at least.");
}
我遇到了这个例外:
测试适配器'WebHostAdapter'在运行测试'TestMethod1'时抛出异常。无法正确配置网站;获取ASP.NET进程信息失败。请求“http://localhost:3418/SysCoord/VSEnterpriseHelper.axd”返回错误:远程服务器返回错误:(404)Not Found。 远程服务器返回错误:(404)Not Found。
页面在网址:http://localhost:3418/Web/SysCoord/ChooseEPA.aspx的浏览器中正常工作。
此物理路径为:C:\ ESI \ HR_Connect2 \ BenefitChangeSystem \ Application_DEV \ Web \ SysCoord。
任何想法都会受到赞赏。
更新1
在本文中,我的web.config文件中添加了以下内容。还使web.config可写并杀死/重新启动开发Web服务器。行为没有变化。
<location path="VSEnterpriseHelper.axd">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
更新2
将AspNetDevelopmentServerHost属性更改为等效于[AspNetDevelopmentServerHost(“%PathToWebRoot%\ solutionfolder \ webfolder”,“/ webfolder”)]解决了404问题。
不幸的是,测试开始返回500错误。进步,但并不多。对一个干净的项目进行试验和错误得出的结论是,对web.config中的自定义类的引用导致了这个问题。
例如:
<profile enabled="true" defaultProvider="MyProfileProvider">
<providers>
<add name="MyProfileProvider" connectionStringName="ProfileConnectionString" applicationName="/MyApp" type="System.Web.Profile.SqlProfileProvider"/>
</providers>
<properties>
<add name="Theme" type="String" defaultValue="Default"/>
<add name="LastLogon" type="DateTime"/>
<add name="LastLogonIp" type="String"/>
<!--
<add name="EmployeeSearchCriteria" type="MyApplicationFramework.Profile.EmployeeSearchCriteria"/>
<add name="DocumentSearchCriteria" type="MyApplicationFramework.Profile.DocumentSearchCriteria"/>
-->
</properties>
</profile>
上面的标准类型被注释掉,测试运行正常。如果取消注释,则会返回500错误。
过去任何人都有过类似的问题吗?
答案 0 :(得分:15)
之前我遇到过这个问题,在阅读了所有关于它的内容之后放弃了这个问题(包括这个帖子)。
在我的案例中,解决方案结果很简单。我所要做的就是不使用ASP.NET测试属性,只是将MVC项目作为DLL进行测试。
从测试中删除额外的属性。
[TestMethod]
public void TestMethod1()
{
Page page = TestContext.RequestedPage;
Assert.IsTrue(false, "Test ran, at least.");
}
在代码覆盖率中,取消选中MVC项目并手动添加MVC项目的DLL。
Voila,它可以作为正常的程序集进行检测,没有错误,不会启动开发服务器,也不会使Team Build失败。
答案 1 :(得分:8)
我发现使用vs2010我不仅限于4.0应用程序。但我发现,如果测试Web应用程序并且您使用旧的System.Web.Extensions版本重定向,则可能会出现错误。从 Web.config 文件中删除以下部分修复了我的问题:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v2.0.50727">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
祝你好运。
答案 2 :(得分:2)
我遇到了和你一样的问题,不过我的经历有点不同。
我在vista x64上,我的开发人员使用xp x64 ......他们根本没有任何问题。我刚刚升级,无法为asp.net MVC项目运行任何单元测试。我收到了你收到的同样的500错误。
我关闭了代码覆盖率,一切都神奇地开始工作。
答案 3 :(得分:1)
根据您的证据,我猜想单元测试项目或Web项目中缺少对包含MyApplicationFramework.Profile.EmployeeSearchCriteria
的任何程序集的引用 - 尽管我真的认为您只需要在Web中引用项目,但我不了解VS Web服务器在用作单元测试的一部分时的行为。
答案 4 :(得分:1)
我遇到了一个测试Web服务的类似问题,该项目是.NET 3.51。我收到了IIS 500错误。 我删除了由Hal Diggs评论的旧程序集绑定并且它有效。
答案 5 :(得分:1)
在使用Visual Studio 2010对Web应用程序进行单元测试时,我收到了相同的错误消息。唯一的区别是我使用的是IIS,即我省略了[AspNetDevelopmentServerHost("%PathToWebRoot%")]
指令。
我怀疑问题在于我使用的是IIS 5.1版本。更多信息:
http://ibsta.blogspot.com/2011/01/unit-testing-fun-under-visual-studio.html
答案 6 :(得分:1)
我设置了一个默认的单元测试,弹出错误,让我来到这里。我刚删除了以下内容(如下)。然后点击调试当前上下文和繁荣,罚款:S。
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("C:\\Inetpub\\....]
答案 7 :(得分:0)
我遇到了与单元测试相同的问题。 并找到问题的原因并解决它。 问题仅在于目录的访问权限。
在我的情况下,我在不同的驱动器(d)上安装了VSTS,然后默认安装。 因此,只为整个目录 \ Program Files \ Microsoft Visual Studio 9.0 提供用户 PCNAME \ ASPNET 的完全访问权限。
我正在使用Windows XP,但如果您使用的是窗口服务器,则为用户 NetworkServices 提供访问权限。
通过这个解决方案,我解决了我的问题。 希望你能从这个答案找到有用的东西。
谢谢, Priyesh Patel
答案 8 :(得分:0)
像这样评论web.config的全部内容
<!-- <location path="VSEnterpriseHelper.axd">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web> </location> -->
它对我有用
答案 9 :(得分:0)
确保您的Web应用程序针对Framework 4.0。如果你想测试一个 2.0,3.0或3.5项目,您将获得(500)内部服务器错误。
答案 10 :(得分:0)
我遇到了同样的问题。然后我检查了Web项目和单元测试项目的属性。并发现目标框架设置不同。我将项目的目标框架设置为.Net框架4(在我的例子中)。最后再次运行测试方法并且工作正常。
感谢。
答案 11 :(得分:0)
对我而言,Resharper造成了这个问题。一旦我暂停它(工具 - &gt;选项 - &gt; Resharper - &gt;一般 - &gt;暂停)一切正常。 (使用VS2010SP1和Resharper Ultimate 2016.1.2)