ASP.NET web forms are challenging to test, because the code and UI logic are sprinkled together.
Here are some of the options I was thinking of:
1) HttpSimulator allows you to simulate the HttpContext.
For example, to simulate a GET request for the web root of your application, you would write:
2) NunitAsp : a cool mock framework, but doesn't seem to be actively maintained.
Here is how you could imitate clicking on buttons in an ASP form.
3) Use Cassini DLL (built-in VS web server) in your code, and explicitly start its instance in your unit tests. Scott Hanselman describes how this could be done.
And my choice is #2 or #3.