65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 NUnit 和 MonoDevelop 设置测试项目

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.20/5 (3投票s)

2009 年 3 月 23 日

CPOL

3分钟阅读

viewsIcon

75613

downloadIcon

388

如何在 MonoDevelop 中设置 NUnit 测试项目。

介绍 

本文旨在尝试创建一些关于 NUnitMonoDevelop 的文档。在网上搜索了一番徒劳无功后,我决定撰写本文;可能已经有相关文档,但我找不到。本文基于 UbuntuStudio 8.04 上的 NUnit 2.2.8.0 和 MonoDevelop 1.0。让我最困惑的是 MonoDevelop 有一个名为“NUnit 程序集测试集合”的项目模板;如果有人能解释一下它用于什么或如何使用,我很乐意更新本文或链接到其他文章。总而言之,使用 NUnit 与 MonoDevelop 并不那么显而易见,我不确定这是否是最佳实践,但它对我有效。

我遇到的一个关于指导的建议是,建议为解决方案中的每个项目都创建一个测试项目。我个人喜欢这个概念,因为它清晰且直观地将测试与实际代码分离开来。是否将测试项目包含在同一个解决方案中取决于您自己。按照以下简单步骤开始对代码进行单元测试。请记住,这绝不是一篇全面的单元测试文章。如果您正在阅读本文,我假设您知道什么是单元测试以及为什么要使用它们。

在这个例子中,我们将创建一个控制台应用程序,添加一个库,并为该库创建一个单元测试。

  • 运行 MonoDevelop。
  • 按照这里的教程创建解决方案、控制台应用程序和库。
  • 像在教程中一样,向解决方案中添加另一个库,并将其命名为 MyLibraryTest
  • MyLibraryTest->MyClass.cs 重命名为 MyClassTest.cs
  • 打开 MyLibraryTest->MyClassTest.cs,并将类重命名为 MyClassTest。注意:您可以通过右键单击类的名称并选择 Class->MyClass->Rename 轻松重命名该类。

    RenameClass.png

  • MyLibraryTest 项目中,添加对 MyLibrary 项目的引用,以及对 nunit.framework 程序集的引用。在“编辑引用”窗口中,选择“包”选项卡,然后搜索 nunit(在 Ubuntu 中,您只需开始键入 nunit,窗口就会自动滚动)。
  • MyLibraryTest->MyClassTest.cs 中,在“using System;”语句之后添加以下 using 语句
    using MyLibrary;
    using NUnit.Framework;
  • 将以下属性添加到 MyClassTest
    [TestFixture]
  • 将以下方法添加到 MyLibrary->MyClass.cs
    public int Divide(int number1, int number2)
    {
       int result;
       try
       {
          result = number1 / number2;
       }
       catch(DivideByZeroException)
       {
          result = -1;
       }
       return result;
    }
  • 将以下方法添加到 MyClassTest

    [Test]
    public void DivideTest()
    {
       MyClass mc = new MyClass();
       
       int result = mc.Divide(12, 6);
       
       Assert.AreEqual(2, result);
       // 
       // Dividing by zero should result in -1 since the function handles this case.
       result = mc.Divide(0, 22);
       Assert.AreEqual(-1, result);
    }
  • 执行您的测试

    • 选择 View | Unit Tests 以调出单元测试窗口。

      ViewUnitTests.jpg

    • 在单元测试窗口中右键单击测试,然后选择 Run Test。

      RunTest.png

    • 选择 View | Test Results 以查看结果。

      ViewTestResults.jpg

    • 测试结果

TestResults.png

总之,使用 NUnit 和 MonoDevelop 开始 TDD 相对容易。我希望 NUnit 和/或 MonoDevelop 的某个人能够阅读这篇文章并说“你说对了!”或者“这完全是垃圾”。无论如何,我希望您觉得这篇文章足够有用,可以开始。此外,非常感谢您提供的任何反馈。祝您编码愉快!

背景

  • 熟悉测试驱动开发

Using the Code

此处 下载压缩的代码示例,并使用 MonoDevelop 打开它。

关注点

我发现 MonoDevelop 1.0 没有内置的调试器。显然,您可以获取一个插件,但我建议等待今年发布的 MonoDevelop 2.0。 这里列出了功能。

我在 Ubuntu 上注意到的一件事是 MonoDevelop 1.0 经常崩溃。我不确定这是否与我正在进行的单元测试有关,但我希望 2.0 更稳定。

我注意到即使有一个除以零异常的捕获,测试仍然失败。你能找出原因吗?

历史

  • [3.22.2009 更新]
    • 主要更改,包括更多实际的解决方案和测试设置
  • [3.19.2009 更新]
    • 找到了以下相关 文章
  • [3.18.2009 更新]
    • 修复了代码块显示
    • 更新了源代码,将单元测试拆分出来,每个方法一个
© . All rights reserved.