Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 一些Web服务方法的单元测试_C#_Web Services_Unit Testing - Fatal编程技术网

C# 一些Web服务方法的单元测试

C# 一些Web服务方法的单元测试,c#,web-services,unit-testing,C#,Web Services,Unit Testing,我的老板想让我创建一个.aspx页面,文本框,以便输入信用卡信息,这样我们就可以在我们的信用卡服务中测试一些方法 这很好,但我认为我们可以对此进行单元测试。唯一的问题是,我们不需要在web表单中键入内容,只需要更改传递到单元测试中的变量值 有谁能告诉我,如果我们不做一个单元测试而不是一个.aspx页面来测试并输入测试数据来测试对我们的一些方法的一些调用,那么我们是否疯了 他最终会告诉我,单元测试需要花费太多的时间来设置(正如我试图告诉他我们需要进行单元测试),这是一个愚蠢的借口。相反,你可以编写

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

这很好,但我认为我们可以对此进行单元测试。唯一的问题是,我们不需要在web表单中键入内容,只需要更改传递到单元测试中的变量值

有谁能告诉我,如果我们不做一个单元测试而不是一个.aspx页面来测试并输入测试数据来测试对我们的一些方法的一些调用,那么我们是否疯了


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

相反,你可以编写一个简单的.NET(或Java)测试来调用web服务并检查各种场景,以及明显的好处(它是可测试的)您还将拥有一种自动检查其功能的方法

编写单元测试“浪费”的时间将通过反复测试相同场景而不是仅仅运行自动测试所节省的时间来收回

如果你的老板不相信这一点,他会去做研究


如果所有这些都失败了,为什么不使用一个自动工具,比如至少你可以避免一次又一次地手动测试相同的功能。

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


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

在我看来,如果您创建.aspx页面并从web表单中获取价值,那么它将比单元测试更具实时性。 我希望web服务已经由提供此web服务的组织进行了单元测试。 我认为,您只需要创建.aspx表单并完成您的工作

您可以对整个开发过程进行单元测试。 单元测试最好由编写类/函数/web方法代码的人来完成


如果您有任何问题,请告诉我。

如果是ASMX web服务,您可以尝试在web.config中启用HttpPost协议:

<configuration>
  <system.web>
    <webServices>
      <protocols>
        <add name="HttpPost"/>
      </protocols>
    </webServices>
  </system.web>
</configuration>

这将在您访问浏览器中的.asmx页面时启用web服务的测试表单。它可能不适合复杂类型;但是如果您有复杂的类型,那么构建单元测试将比定制表单更容易


认为单元测试比web表单更难的观点似乎是错误的;如果您正在开发表单,除了构建页面本身,您还必须编写web服务客户端代码。

您的老板可能希望确认可以从.aspx页面调用web服务,并且能够尝试一些值。(他是否希望其他人使用示例调用代码来创建真正的web页面?)如果您的web服务调用任何外部服务和/或使用数据库,那么无论如何都很难为其编写自动单元测试

至于为web服务编写真正的单元测试,我认为您这次已经输掉了这场战斗

下次,尝试为web服务调用的每个方法编写单元测试,就在编写方法之前或之后。甚至不需要告诉你的老板你正在这样做,因为这样会更快地生成工作代码

一旦您证明单元测试有助于快速编写更好的代码,您可以尝试引入测试驱动开发和/或让单元测试检查到源代码控制系统中,其他人在更改代码时运行它们


在你的老板回家后,你可以在今晚花一些自己的时间来编写单元测试。只有当他问你的代码为什么没有bug时,才告诉他你做了什么。

这是一场你肯定会输掉的战斗。你必须设身处地为老板着想。有些项目中,单元测试可能会占用太多时间,尤其是在开发周期结束时,当所有事情都匆忙完成时。必须从一开始就遵循,否则在您已经忘记特定代码段是如何工作的(不,注释通常是不够的)之后,您将浪费太多的时间来实现单元测试


只需将TDD作为下一个项目的常规做法。在对所有代码进行单元测试之后,您可以使用诸如和之类的工具实现某种类型的功能测试。

猜测您已经输掉了这场战斗(我们支持您)。有比手动为web服务创建使用者更好的解决方案


退房。它使用WSDL并允许您处理xml请求。如果他们想要的只是一个POC,那么很容易插入web服务进行测试。

我对像以前那样留下如此油嘴滑舌的答案感到有点内疚,所以这里有一个更严肃的观点:

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

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

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