C# 测试web服务包装器

C# 测试web服务包装器,c#,web-services,unit-testing,C#,Web Services,Unit Testing,我有一个封装外部live web服务功能的程序集 如何有效地测试此web服务。我应该创建web服务的存根,还是应该编写向web服务发送和接收实时数据的测试 第二种方法的问题是,如果我发送并期望来自web服务的真实数据,那么我不能每次都断言结果,因为它们可能会改变 如果包装器只将调用转发给web服务,而没有任何条件逻辑,那么就没有必要针对它创建不经过真正web服务的测试。在这种情况下,您应该为每个操作创建一个测试,该测试只测试访问web服务和返回时没有意外错误的能力。返回的数据真的不重要。这是包装

我有一个封装外部live web服务功能的程序集

如何有效地测试此web服务。我应该创建web服务的存根,还是应该编写向web服务发送和接收实时数据的测试


第二种方法的问题是,如果我发送并期望来自web服务的真实数据,那么我不能每次都断言结果,因为它们可能会改变

如果包装器只将调用转发给web服务,而没有任何条件逻辑,那么就没有必要针对它创建不经过真正web服务的测试。在这种情况下,您应该为每个操作创建一个测试,该测试只测试访问web服务和返回时没有意外错误的能力。返回的数据真的不重要。这是包装器和web服务之间的集成测试

如果您的包装器包含条件逻辑,那么最好创建执行所有路径的测试。如果您不依赖于真正的web服务,那么测试这些情况会更容易


为了测试客户机代码(调用包装器的代码),应该存根包装器或存根web服务。这将为您提供所需的控制,以确保客户机在给定相同输入的情况下始终收到相同的输出。

如果包装器只将调用转发给web服务,而没有任何条件逻辑,那么就没有必要针对它创建不经过真正web服务的测试。在这种情况下,您应该为每个操作创建一个测试,该测试只测试访问web服务和返回时没有意外错误的能力。返回的数据真的不重要。这是包装器和web服务之间的集成测试

如果您的包装器包含条件逻辑,那么最好创建执行所有路径的测试。如果您不依赖于真正的web服务,那么测试这些情况会更容易

为了测试客户机代码(调用包装器的代码),应该存根包装器或存根web服务。这将为您提供所需的控制,以确保客户机在给定相同输入的情况下始终接收相同的输出