单元测试的艺术——入门篇

发表于:2017-8-01 11:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Helius-黑牛    来源:个人博客

  三、开始使用框架进行基础的单元测试
  3.1、单元测试框架的作用
  单元测试框架是帮助开发人员进行单元测试的代码库和模块。
  3.2、NUnit
  NUnit 是一套开源的基于.NET平台的类Xunit白盒测试架构,支持所有的.NET平台。这套架构的特点是开源,使用方便,功能齐全。很适合作为.NET语言开发的产品模块的白盒测试框架。
  起初是从流行的Java单元测试框架JUnit直接移植过来的,之后NUnit在设计和可用性上做了极大地改进,和JUnit有了很大的区别,给日新月异的测试框架生态系统注入了新的活力。
  如何在VS安装并运行呢?用Nuget是最方便的一种形式了,如下图:
  3.3、编写第一个单元测试
  (1)假定我们要测试下面这段代码:
  public class LogAnalyzer
  {
  public bool IsValidLogFileName(string fileName)
  {
  if (fileName.EndsWith(".SLF"))
  {
  return false;
  }
  return true;
  }
  }
  这个方法是用来检查文件扩展名的,以此判断是否是一个有效的文件。在上面的程序中,故意在if条件语句中少了一个‘!’号,这样,我们可以看到测试失败时在测试运行期间会显示什么内容。
  (2)新建一个类库项目,名称最好为[ProjectUnderTest].UnitTests;并添加一个类,类型为[ClassName]Tests的类;在类中就可以写测试方法,一般测试方法是这样子来命名的:[UnitOfWorkName]_[ScenarioUnderTest]_[ExceptedBehavior]。
  (3)我们需要明确的是如何编写测试代码,一般来说,一个单元测试包含三个行为:
  ① 准备(Arrange)对象,创建对象,进行必要的设置;
  ② 操作(Act)对象;
  ③ 断言(Assert)某件事情是预期的;
  (4)根据以上步骤,编写第一个单元测试方法
  [TestFixture]
  public class LogAnalyzerTests
  {
  [Test]
  public void IsValidFileName_BadExtension_ReturnsFalse()
  {
  LogAnalyzer analyzer = new LogAnalyzer();
  bool result = analyzer.IsValidLogFileName("filewithbadextension.foo");
  Assert.AreEqual(false, result);
  }
  }
  其中,属性[TestFixture]:标识这个类是一个包含自动化NUnit测试的类和[Test]:标识这个方法是一个需要调用的自动化测试是NUnit的特有属性,NUnit用属性机制来识别和加载测试。
  3.4、运行过程与结果

  从上图可以看出,测试方法并没有通过,我们期望(Expected)的结果是False,而实际(Actual)的结果却是True。并且还帮你指出了行号。

32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号