title: ASP.NET Unit test woes (odd exception error)
body: <p>I have created a new solution with a minimal amount of code that represents the issue I am having.  This is the simplest I could get it down to.</p>
  
  <pre><code>namespace EntServ.BusinessObjects
  {
      /// &lt;summary&gt;
      /// Summary description for EntServSession
      /// &lt;/summary&gt;
      public class EntServSession
      {
          public EntServSession()
          {
  
          }
  
          public static EntServSession Login(string username, string password)
          {
              EntServSession ret = null;
  
              if (username == "test"  &amp;&amp; password == "pass")
                  ret = new EntServSession();
  
              return ret;
          }
  
      }
  }
  </code></pre>
  
  <p>I started with a new solution, and created one class in the App_Code folder with one static method similar to one of the methods I was having an issue with. I right-clicked on the classname, and click "Create Unit Tests...".  It offered to create a new Test project for me, I accepted the defaults and clicked okay.  It generated the following file:</p>
  
  <pre><code>using EntServ.BusinessObjects;
  using Microsoft.VisualStudio.TestTools.UnitTesting;
  using Microsoft.VisualStudio.TestTools.UnitTesting.Web;
  using System.Data;
  
  namespace EntServObjectTests
  {
  
  
      /// &lt;summary&gt;
      ///This is a test class for EntServSessionTest and is intended
      ///to contain all EntServSessionTest Unit Tests
      ///&lt;/summary&gt;
      [TestClass()]
      public class EntServSessionTest
      {
  
  
          private TestContext testContextInstance;
  
          /// &lt;summary&gt;
          ///Gets or sets the test context which provides
          ///information about and functionality for the current test run.
          ///&lt;/summary&gt;
          public TestContext TestContext
          {
              get
              {
                  return testContextInstance;
              }
              set
              {
                  testContextInstance = value;
              }
          }
  
          #region Additional test attributes
          // 
          //You can use the following additional attributes as you write your tests:
          //
          //Use ClassInitialize to run code before running the first test in the class
          //[ClassInitialize()]
          //public static void MyClassInitialize(TestContext testContext)
          //{
          //}
          //
          //Use ClassCleanup to run code after all tests in a class have run
          //[ClassCleanup()]
          //public static void MyClassCleanup()
          //{
          //}
          //
          //Use TestInitialize to run code before running each test
          //[TestInitialize()]
          //public void MyTestInitialize()
          //{
          //}
          //
          //Use TestCleanup to run code after each test has run
          //[TestCleanup()]
          //public void MyTestCleanup()
          //{
          //}
          //
          #endregion
  
  
          /// &lt;summary&gt;
          ///A test for Login
          ///&lt;/summary&gt;
          // TODO: Ensure that the UrlToTest attribute specifies a URL to an ASP.NET page (for example,
          // http://.../Default.aspx). This is necessary for the unit test to be executed on the web server,
          // whether you are testing a page, web service, or a WCF service.
          [TestMethod()]
          [HostType("ASP.NET")]
          [AspNetDevelopmentServerHost("%PathToWebRoot%\\EntServ2-ASP.NET\\trunk\\WWW", "/WWW")]
          [UrlToTest("http://localhost/WWW")]
          public void LoginTest()
          {
              string username = string.Empty; // TODO: Initialize to an appropriate value
              string password = string.Empty; // TODO: Initialize to an appropriate value
              EntServSession expected = null;
              EntServSession actual = EntServSession_Accessor.Login(username, password);
              Assert.AreEqual(expected, actual);
              Assert.Inconclusive("Verify the correctness of this test method.");
          }
  
      }
  }
  </code></pre>
  
  <p>I tried running the test and it tries to compile and I get the build error:</p>
  
  <pre><code>Error   1   
  The type or namespace name 'EntServSession' could not be found 
  (are you missing a using directive or an assembly reference?)   C:\Projects\EntServ-ASP.NET\trunk\Tests\EntServObjectTests\EntServSessionTest.cs
  82
  13
  EntServObjectTests
  </code></pre>
  
  <p>I publish the web site and put a reference to the App_code.dll in the test project and I no longer get a build error.  I instead get the following exception error.  I put break points on every line of the class, and the debugger does not stop on any line .</p>
  
  <pre><code>Error Message
  Test method EntServObjectTests.EntServSessionTest.LoginTest threw exception:  System.InvalidCastException: Unable to cast object of type 'EntServ2.BusinessObjects.EntServSession' to type 'EntServ2.BusinessObjects.EntServSession'..
  
  Stack Trace
  EntServ2.BusinessObjects.EntServSession_Accessor.Login(String username, String password)
  EntServObjectTests.EntServSessionTest.LoginTest() in C:\Projects\EntServ2-ASP.NET\trunk\Tests\EntServObjectTests\EntServSessionTest.cs: line 83
  </code></pre>