c# - 我如何对这个简单的表单进行单元测试

标签 c# asp.net unit-testing

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

FirstName
LastName

在后端,我有这个类:

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

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

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

谢谢。

最佳答案

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

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

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

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

像这样的测试也可以用于运行应用程序以监控“应用程序健康状况”。例如,我编写的一个应用程序系统与公用电话系统接口(interface),因此我需要编写一个测试程序来确保该应用程序能够成功调用电话)。

关于c# - 我如何对这个简单的表单进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13371609/

相关文章:

c# - Haskell 中 map 函数的 C# 等价物是什么

c# - 如何在 Azure 中保留文件而不覆盖

c# - 为什么在调用非静态方法时会调用结构中的静态构造函数?

asp.net - .NET "code nugget blocks"?

c# - Entity Framework : Implement interfaces for unit test

c# - 外键冲突

c# - 使用 HttpClientCertificate 与 X509Certificate2 检查证书有效性

html - 旧的 CSS 出现了?

python - python mock __init__() 返回伪类的正确方法

node.js - 如何使用 Node.js postgres 测试 CRUD 操作