我的单元测试项目中有以下方法:
[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)找不到。远程服务器返回错误:(404)未找到。
该页面在浏览器中的url: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错误。
有人在过去遇到过类似的问题吗?
发布于 2010-10-21 12:48:51
我以前也遇到过这个问题,在阅读了所有我能搜索到的关于它的文章(包括这个帖子)后,我放弃了。
在我的例子中,解决方案很简单。我所要做的就是不使用MVC测试属性,而只是将ASP.NET项目作为一个DLL进行测试。
第一步
从测试中删除额外的属性。
[TestMethod]
public void TestMethod1()
{
Page page = TestContext.RequestedPage;
Assert.IsTrue(false, "Test ran, at least.");
}
第二步
在代码覆盖率中,取消选中MVC项目,然后手动添加MVC项目的DLL。
瞧,它就像一个普通的程序集一样,没有错误,不会启动Development Server,也不会使Team Build失败。
发布于 2010-08-19 03:14:25
我发现使用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>
祝好运。
发布于 2009-02-27 20:15:45
我遇到了和你一样的问题,但是我的经历有点不同。
我在vista x64上,我的开发人员在xp x64...they上没有任何问题。我刚刚升级,无法为asp.net MVC项目运行任何单元测试。我收到了和你收到的相同的500错误。
我关闭了代码覆盖,一切都神奇地开始工作了。
https://stackoverflow.com/questions/260432
复制相似问题