500 Error Running Visual Studio ASP.NET Unit Test
unit-testing, visual-studio, visual-studio-2008
Solution
I've had this problem before and at that point gave up after reading all I could google about it (including this thread).
The solution turned out to be simple in my case. All I had to do was not use ASP.NET test attributes and simply test the MVC project as a DLL.
Step 1
Remove the extra attributes from the test.
[TestMethod]
public void TestMethod1()
{
Page page = TestContext.RequestedPage;
Assert.IsTrue(false, "Test ran, at least.");
}
Step 2
In Code Coverage, uncheck the MVC Project and add the MVC Project's DLL manually.
Voila, it get instrumented as a normal assembly, no errors, doesn't spin up the Development Server, also doesn't fail the Team Build.
Problem
I have the following method in my unit test project: ``` [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."); } ``` I'm getting this exception: The test adapter 'WebHostAdapter' threw an exception while running test 'TestMethod1'. The web site could not be configured correctly; getting ASP.NET process information failed. Requesting 'http://localhost:3418/SysCoord/VSEnterpriseHelper.axd' returned an error: The remote server returned an error: (404) Not Found. The remote server returned an error: (404) Not Found. The page works as it should in a browser at the url: http://localhost:3418/Web/SysCoord/ChooseEPA.aspx. This physical path is: C:\ESI\HR_Connect2\BenefitChangeSystem\Application_DEV\Web\SysCoord. Any ideas would be appreciated. Update 1 Added the following to my web.config file per this article. Also made the web.config writable and killed/restarted the development web server. No change in behavior. ``` <location path="VSEnterpriseHelper.axd"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> ``` Update 2 Changing the AspNetDevelopmentServerHost attribute to the equivalent of [AspNetDevelopmentServerHost("%PathToWebRoot%\solutionfolder\webfolder", "/webfolder")] resolved the 404 problem. Unfortunately the test began to return a 500 error instead. Progress, but not much. Trial and error with a clean project led to the conclusion that references to custom classes in the of the web.config were causing the problem. For example: ``` <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> ``` With the criteria types above commented out the test ran fine. With them uncommented, the 500 error was returned. Anyone had a similar problem in the past?