首页 / C# / 首次测试(VS2010 C#)
首次测试(VS2010 C#)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了首次测试(VS2010 C#),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1659字,纯文字阅读大概需要3分钟。
内容图文
这是我第一次遇到单元测试,我试图理解如何在简单的日期验证中使用这个概念.
用户可以选择代表日期的ToDate,直到可以进行付款.如果我们的日期无效,则无法付款.
private void CheckToDate(DateTime ToDate)
{
if (Manager.MaxToDate < ToDate.Year)
//show a custom message
}
在这种情况下如何使用单元测试?
问候,
亚历克斯
谢谢你的回答:
正如你们许多人所建议的那样,我将拆分函数并将验证与消息显示分开,并使用单元测试.
public bool IsDateValid(DateTime toDate)
{
return (Manager.MaxToDate < toDate.Year);
}
解决方法:
对的,这是可能的.但是单元测试改变了你班级的设计.要对此代码进行单元测试,您应进行以下更改:
>将您的方法公之于众. (可以使其受到保护,但为了简单起见,请将其公开).
>将此方法的所有外部依赖项提取到接口,以便您可以模拟它们.然后,您可以使用一些模拟库(moq,Rhino.Mocks)来模拟真正的依赖关系并编写断言.
>写测试.
这是示例代码.
被测试的课程:
public class ClassUnderTest
{
public IManager Manager {get;set;}
public IMessanger Messanger {get;set}
public ClassUnderTest (IManager manager, IMessanger messanger)
{
Manager = manager;
Messanger = messanger;
}
private void CheckToDate(DateTime ToDate)
{
if (Manager.MaxToDate < ToDate.Year)
//show a custom message
Messanger.ShowMessage('message');
}
}
测试:
[TestFixture]
public class Tester
{
public void MessageIsShownWhenDateIsLowerThanMaxDate()
{
//SetUp
var manager = new Mock<IManager>();
var messanger = new Mock<IMessanger>();
var maxDate = DateTime.Now;
manager.Setup(m => m.MaxToDate).Returns(maxDate);
var cut = new ClassUnderTest (manager.Object, messanger.Object);
//Act
cut.CheckToDate();
//Assert
messanger.Verify(foo => foo.ShowMessage("message"), Times.AtLeastOnce())
}
}
通过测试引入的设计更改为您提供了良好的系统解耦.当外部依赖项未写入事件时,可以为特定类编写测试.
内容总结
以上是互联网集市为您收集整理的首次测试(VS2010 C#)全部内容,希望文章能够帮你解决首次测试(VS2010 C#)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。