我们可以在.aspx.cs页面中编写测试方法吗? 如果是,那怎么样? 我需要为Page_Load方法中的代码编写测试方法。 如果有任何解决方案,请建议。
答案 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
创建一个单独的测试项目的原因。