7

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

4

3 回答 3

5

或许可以,但如果将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)
}
于 2012-12-18T09:52:00.683 回答
3

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

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

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

于 2012-12-18T09:53:27.597 回答
1

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

于 2012-12-18T09:58:11.297 回答