单元测试一些Web服务方法

Pos*_*Guy 7 c# unit-testing web-services

我的老板要我创建一个.aspx页面,文本框以简化输入信用卡信息,这样我们就可以在CreditCard服务中测试一些方法.

多数民众赞成,但我认为我们可以为此进行单元测试.唯一的问题是,我们只需更改传递给单元测试的变量值,而不是将内容输入到Web表单中.

任何人都可以告诉我,如果我们因为没有进行单元测试而不是.aspx页面进行测试并输入测试数据以测试对我们某些方法的调用而感到疯狂吗?

他最终会告诉我单元测试需要花费太多时间来设置(因为我试图告诉他我们需要进行单元测试),这是一个蹩脚的愚蠢借口.

Mar*_*ann 9

如果您没有对Web服务进行单元测试而不是编写手动测试工具,那你就疯了:)

基本上,Web服务是通过远程协议访问的API,那么为什么不进行单元测试呢?


Mar*_*ann 6

我对留下如此狡猾的答案感到有点内疚,所以这里有一个更严肃的看法:

让我们来看看单元测试服务需要做些什么.真正的单元测试是一种自动化测试,可以测试单个单元(在您的情况下,Web服务没有任何后端系统,如数据库等).正如其他人所指出的那样,在这种情况下,对服务进行适当的单元测试可能为时已晚.

这并不意味着您不能使用单元测试框架(例如MSTest,xUnit.net,NUnit等)来推动您的服务测试.让我们将这个场景与开发一个抛弃的aspx页面进行对比:

  • 这两种情况下,我将假设Web服务已经部署,配置和运行,因为在aspx场景中可能就是这种情况.
  • 这两种情况下,您都必须向测试项目添加服务引用以生成Web服务代理.
  • 这两种情况下,您都必须编写将值应用于Web服务方法的请求参数的代码.
  • 这两种情况下,您都需要调用Web服务操作.

那有什么不同?

  • 在aspx场景中,您需要从表单字段中收集值并将这些值分配给服务方法参数.使用测试框架,您可以直接编写这些值.实际上编写自动化测试更容易.1-0
  • 在aspx场景中,您需要编写获取响应数据并将其写入网页的代码.相反,使用测试框架,您需要编写断言.我会声称写断言更容易,但这有点主观,所以我会把这个作为一个平局 - 仍然是1-0
  • 在自动化测试场景中,您需要编写许多具有不同值的测试,因此与aspx选项相比,您需要编写更多代码.1-1
  • 使用自动化测试套件,您可以随后每天多次针对数据库运行自动化测试套件,而无需额外工作,而您需要在每次测试运行时手动输入并手动验证 aspx场景中的结果.这是测试工作的巨大胜利.2-1(那是保守的)

总而言之,我想说如果你不坚持在这种情况下进行真正的单元测试,而只是利用单元测试框架来编写自动化测试,那么自动化测试应该比使用aspx页面更好.开发工作或多或少都是一样的.

对于你的下一个项目,你可以看看你是否可以从一开始就使用TDD,但这是另一场战斗.

祝好运.