找不到控件(ASP.NET,MS TEST)

时间:2010-06-17 21:33:19

标签: asp.net unit-testing testing

以下测试:

[TestClass]
public class MyTestClass
{
    private TestContext _testContext;
    protected TestContext TestContext
    {
        get { return _testContext; }
        set { _testContext = value; }
    }

    [TestMethod]
    [HostType("ASP.NET")]
    [UrlToTest("http://localhost/MyPage.aspx")]
    public void TestMyPage()
    {
        TextBox tb = TestContext.RequestedPage.FindControl("ControlId") as TextBox;
        Assert.IsNotNull(tb);
    }
  }

失败,并使用字符串“ctl00 $ ContentPlaceHolder1 $ ControlId”作为控件ID提供了正确的控件...我知道,ASP.NET包含用于web控件的“ClientID”属性,但有没有可能知道在TEST中推进控件的客户端ID(在VS 2008下)?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为ClientID不是你在这里所追求的。我认为你的问题是FindControl没有做你想象的那样。

FindControl不是递归的。如果您的文本框位于ContentPlaceHolder内,则需要在占位符上调用FindControl,而不是Page

否则,我建议编写一个递归的FindControl函数来搜索整个控件层次结构。您可以看到示例here