TDD - 对 Web 服务进行单元测试
TDD - Unit Testing a Web Service
我有一个 class 负责调用 Web 服务并 return 获取结果。
我正在使用 NUnit 对整个框架进行单元测试,但在这种情况下,我找不到任何令人信服的理由说明这会构成一个好的单元测试
为什么?
- 当web服务return的数据时,是不确定的;也就是说,x 可能并不总是导致 y
- 当web服务没有return任何数据时,会出现404 not found
示例:
Result res = GetServiceData("783462"); // Could return x, y or 404 not found.
Result res = GetServiceData("444444"); // Could return x, y or 404 not found.
因此这看起来不像是可以可靠地进行单元测试的东西...
如何找到令人信服的理由对这样的 class 进行单元测试,或者我是不是找错了树?
如果您正在以集成方式测试 Web 服务,则您不是在进行单元测试。您正在进行集成测试。
集成测试有价值吗?当然可以,但是您必须控制数据,这意味着您的部分工作是设置提取的数据,以便您获得可以测试的数据。这有什么用?在某些情况下,none,但如果数据通过业务规则,则可能非常有价值。其实你可以建立一个验收条件矩阵,看整个系统是否满足验收标准。这增加了价值。
在您的特定实例中,当您请求不存在的数据时确保存在 404 也有一定的价值(例如,使用负数进行测试?)。
如果您只想测试单元,则需要注入依赖项,以便您只测试代码。那有价值吗?这取决于。如果它只是一种传递类型的服务(即,由 class 库完成的所有工作),您只是在验证 Microsoft 在框架上完成了他们的工作,这通常价值有限,如果有的话。
我有一个 class 负责调用 Web 服务并 return 获取结果。
我正在使用 NUnit 对整个框架进行单元测试,但在这种情况下,我找不到任何令人信服的理由说明这会构成一个好的单元测试
为什么?
- 当web服务return的数据时,是不确定的;也就是说,x 可能并不总是导致 y
- 当web服务没有return任何数据时,会出现404 not found
示例:
Result res = GetServiceData("783462"); // Could return x, y or 404 not found.
Result res = GetServiceData("444444"); // Could return x, y or 404 not found.
因此这看起来不像是可以可靠地进行单元测试的东西...
如何找到令人信服的理由对这样的 class 进行单元测试,或者我是不是找错了树?
如果您正在以集成方式测试 Web 服务,则您不是在进行单元测试。您正在进行集成测试。
集成测试有价值吗?当然可以,但是您必须控制数据,这意味着您的部分工作是设置提取的数据,以便您获得可以测试的数据。这有什么用?在某些情况下,none,但如果数据通过业务规则,则可能非常有价值。其实你可以建立一个验收条件矩阵,看整个系统是否满足验收标准。这增加了价值。
在您的特定实例中,当您请求不存在的数据时确保存在 404 也有一定的价值(例如,使用负数进行测试?)。
如果您只想测试单元,则需要注入依赖项,以便您只测试代码。那有价值吗?这取决于。如果它只是一种传递类型的服务(即,由 class 库完成的所有工作),您只是在验证 Microsoft 在框架上完成了他们的工作,这通常价值有限,如果有的话。