.NET 开发人员应该下载的十个必备工具[2]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

<%@ CodeTemplate Language="C#" 
TargetLanguage="C#" 
Description="Car Template" %>

  模板的下一部分是属性声明,在这里可声明将在模板每次运行时指定的属性。就该模板而言,我要使用的唯一属性只是一个字符串,因此属性声明如下所示:

<%@ Property Name="ClassName" Type="String" Category="Context" 
Description="Class Name" %>

  该属性声明将使 ClassName 属性出现在 CodeSmith 属性窗口中,以便可以在模板运行时指定它。下一步是实际生成模板主体,它非常类似于用 ASP.NET 进行编码。你可以在 Figure 3 中查看该模板的主体。[编辑更新 — 6/16/2004:Figure 3 中的代码已被更新,以便对多线程操作保持安全。]
正如你所见,该模板接受字符串输入并使用该类名生成单独的类。在模板主体中,使用与 ASP.NET 中相同的起始和结束标记。在该模板中,我只是插入属性值,但你还可以在这些标记内部使用任意类型的 .NET 代码。在该模板完成之后,你就可以通过双击它或者从 CodeSmith 应用程序中打开它将其加载到 CodeSmith 中。Figure 4 显示了已经加载到 CodeSmith 中的该模板。


Figure 4 CodeSmith 模版

  你可以看到左侧的属性正是我在该模板中声明的属性。如果我输入“SingletonClass”作为类名,并单击 Generate 按钮,则生成 Figure 3 的底部显示的类。
  CodeSmith 使用起来相当容易,如果能够正确应用,则可以产生一些令人难以置信的结果。面向代码生成的应用程序中最常见的部分之一是数据访问层。CodeSmith 包括一个名为 SchemaExplorer 的特殊的程序集,可用来从表、存储过程或几乎任何其他 SQL Server? 对象生成模板。
CodeSmith 由 Eric J. Smith 编写,下载地址是:http://www.ericjsmith.net/codesmith

NUnit
  NUnit 是为 .NET 框架生成的开放源代码单元测试框架。NUnit 使你可以用你喜欢的语言编写测试,从而测试应用程序的特定功能。当你首次编写代码时,单元测试是一种测试代码功能的很好方法,它还提供了一种对应用程序进行回归测试的方法。NUnit 应用程序提供了一个用于编写单元测试的框架,以及一个运行这些测试和查看结果的图形界面。

编写 NUnit 测试
  作为示例,我将测试 .NET 框架中 Hashtable 类的功能,以确定是否可以添加两个对象并且随后检索这些对象。我的第一步是添加对 NUnit.Framework 程序集的引用,该程序集将赋予我对 NUnit 框架的属性和方法的访问权。接下来,我将创建一个类并用 TestFixture 属性标记它。该属性使 NUnit 可以知道该类包含 NUnit 测试:

using System;
using System.Collections;
using NUnit.Framework;

namespace NUnitExample
{
	[TestFixture]
		public class HashtableTest {
		public HashtableTest() {
			
		}
	}
}      

  下一步,我将创建一个方法并用 [Test] 属性标记它,以便 NUnit 知道该方法是一个测试。然后,我将建立一个 Hashtable 并向其添加两个值,再使用 Assert.AreEqual 方法查看我是否可以检索到与我添加到 Hashtable 的值相同的值,如下面的代码所示:

[Test]
public void HashtableAddTest()
{
	Hashtable ht = new Hashtable();
	
	ht.Add("Key1", "Value1");
	ht.Add("Key2", "Value2");
	
	Assert.AreEqual("Value1", ht["Key1"], "Wrong object returned!");
	Assert.AreEqual("Value2", ht["Key2"], "Wrong object returned!");
}      

  这将确认我可以首先向 Hashtable 中添加值并随后检索相应的值 — 这是一个很简单的测试,但能够表现 NUnit 的功能。存在许多测试类型以及各种 Assert 方法,可使用它们来测试代码的每个部分。
  要运行该测试,我需要生成项目,在 NUnit 应用程序中打开生成的程序集,然后单击 Run 按钮。Figure 5 显示了结果。当我看到那个大的绿色条纹时,我有一种兴奋和头晕的感觉,因为它让我知道测试已经通过了。这个简单的示例表明 NUnit 和单元测试是多么方便和强大。由于能够编写可以保存的单元测试,并且每当你更改代码时都可以重新运行该单元测试,你不仅可以更容易地检测到代码中的缺陷,而且最终能够交付更好的应用程序。


Figure 5 NUnit

  NUnit 是一个开放源代码项目,下载地址是:http://www.nunit.org/。还有一个优秀的 NUnit Visual Studio .NET 外挂程序,它使你可以直接从 Visual Studio 中运行单元测试。你可以在 http://sourceforge.net/projects/nunitaddin 找到它。有关 NUnit 及其在测试驱动开发中的地位的详细信息,请参阅文章:“Test-Driven C#: Improve the Design and Flexibility of Your Project with Extreme Programming Techniques

FxCop
  .NET 框架非常强大,这意味极有可能创建优秀的应用程序,但也同样存在创建劣质程序的可能。FxCop 是有助于创建更好的应用程序的工具之一,通过分析程序集,并使用许多不同的规则来检查它是否符合这些规则。FxCop 随附了由 Microsoft 创建的一组规则,你也可以创建并包括你自己的规则。例如,如果你决定所有的类都应该具有一个不带任何参数的默认构造函数,则可以编写一条规则,以确保程序集的每个类上都具有一个构造函数。这样,无论是谁编写该代码, 你都将获得一定程度的一致性。如果你需要有关创建自定义规则的详细信息,参见 John Robbins 有关这方面的 Bugslayer 专栏文章。
  那么,让我们看看实际运行的 FxCop,并且留心一下它在我正在开发的 NUnitExample 程序集中找到什么错误。当你打开 FxCop 时,你首先需要创建一个 FxCop 项目,然后向其添加你要测试的程序集。在将该程序集添加到项目以后,就可以按 Analyze,FxCop 将分析该程序集。Figure 6 显示了 FxCop 在该程序集中找到的错误和警告。


Figure 6 FxCop 运行画面

  FxCop 在我的程序集中找到了几个问题。你可以双击某个错误以查看详细信息,包括规则说明以及在哪里可以找到更多信息。(你可以做的一件有趣的事情是在框架程序集上运行 FxCop 并查看发生了什么事情。)
  FxCop 可以帮助你创建更好的、更一致的代码,但它无法补偿低劣的应用程序设计或非常简单拙劣的编程。FxCop 也不能替代对等代码检查,但是因为它可以在进行代码检查之前捕获大量错误,所以你可以花费更多时间来解决严重的问题,而不必担心命名约定。FxCop 由 Microsoft

本文关键:.NET 开发人员应该下载的十个必备工具
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top