我们可以在.aspx.cs页面中编写单元测试方法吗?

时间:2012-12-18 09:47:19

标签: c# asp.net unit-testing

我们可以在.aspx.cs页面中编写测试方法吗? 如果是,那怎么样? 我需要为Page_Load方法中的代码编写测试方法。 如果有任何解决方案,请建议。

3 个答案:

答案 0 :(得分:4)

可能你可以,但是如果你将Page_Load方法的逻辑提取到模型类中然后单独测试它会更加清晰。

为什么?

  • 在其他页面中重用该方法的逻辑
  • 更好地分离模型和演示文稿
  • 更容易测试的清洁代码

样品:

// Home.aspx.cs
Page_Load()
{
    //Lots of code here
}


// or else Home.aspx.cs
Page_Load()
{
    Foo f = new Foo();
    var result = f.DoThings();
}

//Unit test
Page_Load_FooDoesThings()
{
    //Arrange
    Foo f = new Foo();
    var expected = ...;

    //Act
    var actual = f.DoThings();

    //Assert
    Assert.AreEqual(expected, actual)
}

答案 1 :(得分:3)

您可以在任何地方编写测试方法,您只需要使用3A规则(Arrange,Act,Assert)并根据您使用的测试框架修饰您的方法。您可以使用测试框架,属性,方法等测试几乎任何东西。

但是,最佳做法是为测试创建一个单独的项目。

与其他页面生命周期方法一样Page_Load也不是测试的好选择,因为让它可测试是很麻烦的。我同意“oleksii”,我们可以在Page_Load方法之外测试功能。

答案 2 :(得分:1)

其实你可以。如果您在Page_Load中添加了一些测试方法,那么它在程序上就可以了。但你不应该。因为如果您可以在Page_Load中定义测试方法,那么每次加载页面都会运行不必要的测试。这不是单元测试中的以下方法。这就是为什么Visual Studio创建一个单独的测试项目的原因。