Mar*_*ark 2 unit-testing protected visual-studio-2008
我有一个ASP.NET页面,它是许多派生页面的基础,它包含以下受保护的方法
protected Change SetupApproval(string changeDescription)
{
Change change = Change.GetInstance();
change.Description = changeDescription;
change.DateOfChange = DateTime.Now;
change.MadeBy = Common.ActiveDirectory.GetUsersFullName(AccessCheck.CurrentUser());
change.Page = PageName;
return change;
}
Run Code Online (Sandbox Code Playgroud)
我想写下面的单元测试
[TestMethod]
public void SetupApproval_SubmitChange_ValidateDescription()
{
var page = new DerivedFromBaseClass();
var messageToTest = "This is a test description";
var change = (page as InternalAppsPage).SetupApproval(messageToTest);
Assert.IsTrue(messageToTest == change.Description);
}
Run Code Online (Sandbox Code Playgroud)
我确信这个代码有很多错误(所以建议更正),但我的主要目标是开始为整个项目实施一些测试.我决定从小开始 - 一次一个方法.我首先尝试创建一个新的测试项目,但后来我无法访问SetupApproval方法,因为它受到保护.我的下一次尝试是将TestMethod放在基页内,但是没有办法运行测试.
最后,我使用的是Visual Studio 2008的默认测试框架.
Jon*_*eet 13
两种选择:
DerivedFromBaseClass是一个仅用于测试的类,只需给它一个新的公共(或内部)方法,它只调用SetupApproval并返回返回值.protected internal改为使用该方法,并确保已InternalsVisibleTo为测试程序集进行了设置,以便它可以访问内部方法.记录这是为了测试.第一个选项是更清晰,第二个选项更简单,特别是如果你有很多受保护的方法而且基类是非抽象的.
| 归档时间: |
|
| 查看次数: |
6934 次 |
| 最近记录: |