我们可以在 .aspx.cs 页面中编写测试方法吗?如果是,那怎么办?我需要为 Page_Load 方法中的代码编写测试方法。请建议是否有任何解决方案。
问问题
3902 次
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 回答