Unit Test ASP.net Page_Load
How can create a unit test for the the Page_Load function in ASP.net?
I am using build in Visual Studio Unit开发者_JAVA技巧 test frame work. I want to create a unit test that check the Elements of the web page and their values.
I know about selenium and its abilities in unit testing.
This is the web Page to test WebPageControl.ascx.vb:
Public Class WebPageControl
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
TextBox.Visible = False
End Sub
End Class
This is the Unit test WebPageControlTest.vb:
Public Class WebPageControlTest
Public Sub PageLoadTest()
Dim target As WebPageControl_Accessor = New WebPageControl_Accessor()
Assert.IsFAlse(target.TextBox.Visible)
End Sub
End Class
After I do this I still get an error
Test method RechargeTest.WebPageControlTest.PageLoadTest threw exception: System.NullReferenceException: Object reference not set to an instance of an object.
You're probably not going to be able to new up a Page outside of the ASP.NET runtime.
You may want to google around for the MVP (Model-View-Presenter) pattern under ASP.NET. It makes testing web code a lot easier IMHO. This article is a good starting point:
http://haacked.com/archive/2006/08/09/ASP.NETSupervisingControllerModelViewPresenterFromSchematicToUnitTestsToCode.aspx
If you want testable ASP.NET WebForms code, check out this project. http://webformsmvp.com/
Web forms really wasn't built to be run through unit testing. Here's a good article on what I'm talking about. If you really want your pages to be testable I'd consider moving over to asp.net mvc or mvp.
精彩评论