3

我试图理解为简单场景编写单元测试,但找不到任何能变得如此简单的东西。假设我有一个包含以下两个表单字段的 Web 表单:

FirstName
LastName

在后端,我有这个类:

class User
{
   public string FirstName {get;set;}
   public string LastName {get;set}
}

这些表单字段映射到然后我使用普通的旧 ADO.NET(无框架)保存到数据库中。我没有验证,它只是通过 INSERT 语句保存它。

单元测试适用于哪里?我要写什么单元测试?这甚至值得测试吗?如果我确实有验证功能,那么我可以测试它们,对吗?

谢谢。

4

1 回答 1

1

您并没有真正对表单和 UI 进行单元测试。您要做的是将您的 UI 分成两部分:呈现并返回给客户端的 HTML 和服务器端部分。这实际上是集成测试的一部分,而不是单元测试。请注意,尽管它不是单元测试,但您仍然可以完全自动化集成测试(这只是意味着像 NUnit 这样的单元测试框架并不合适,您需要制作自己的工具)。

您可以通过获取 HTML 并通过 HTML 分析器(如 HtmlAgilityPack)运行它来测试客户端部分,并确保页面中的所有 URI 返回 200 并且所有表单字段都具有正确的name=""属性。

然后,您将单独测试服务器端部分,方法是使用一个程序提交带有示例数据的 POST 表单请求,然后直接检查您的数据库并确保新提交的数据现在以正确的格式保存在数据库中。您将为此使用专用的测试数据库,因为针对生产数据库运行测试工具绝不是一个好主意。

我不能告诉你是否值得为你的应用程序编写自动化测试——它通常花费的时间与编写应用程序代码一样多,甚至更多。您这样做是为了确保在安全关键型或任务关键型系统中至关重要的正确性。要问的简单问题是“如果我的程序不正确,人们会死亡/受伤还是会赔钱?”,如果答案是“是”,那么您应该这样做。

像这样的测试也可以用于运行应用程序以监控“应用程序健康”。例如,我写了一个应用系统与公用电话系统的接口,所以我需要写一个测试器来确保应用程序能够成功拨打电话)。

于 2012-11-14T01:21:39.890 回答