Java 模拟是单元测试的重要部分吗?
我有一个web服务,它调用第三方web服务 现在我想对我的web服务进行单元测试。为此,我应该模拟第三方web服务,还是在测试期间调用它Java 模拟是单元测试的重要部分吗?,java,web-services,unit-testing,jax-ws,Java,Web Services,Unit Testing,Jax Ws,我有一个web服务,它调用第三方web服务 现在我想对我的web服务进行单元测试。为此,我应该模拟第三方web服务,还是在测试期间调用它 有关于单元测试的标准文档吗?这取决于单元测试的内容 因此,如果您正在测试是否能够成功地与第三方Web服务通信,那么您显然不会试图嘲笑这一点。但是,如果您正在对web服务产品中的某些业务用例进行单元测试(与其他模块/web服务的工作无关),则可能需要模拟第三方web服务。是的,您应该模拟第三方web服务进行单元测试。以下是一些优势: 您的单元测试独立于其他组件,
有关于单元测试的标准文档吗?这取决于单元测试的内容
因此,如果您正在测试是否能够成功地与第三方Web服务通信,那么您显然不会试图嘲笑这一点。但是,如果您正在对web服务产品中的某些业务用例进行单元测试(与其他模块/web服务的工作无关),则可能需要模拟第三方web服务。是的,您应该模拟第三方web服务进行单元测试。以下是一些优势:
这两种测试都很重要,但单元测试通常会更早、更频繁地完成。它可以(也应该)在创建系统的所有组件之前完成。集成测试需要在所有大多数组件中取得最少的进展。模拟通常是单元测试组件(具有依赖组件)中必不可少的一个步骤。这是因为在单元测试中,您仅限于测试您的代码是否正常工作(按照合同中的说明执行)。如果此方法在尝试执行其合同部分时依赖于其他组件正确执行其部分,则完全可以模拟该部分(假设它们正确工作)
如果你不模仿其他依赖部分,你很快就会遇到问题。首先,您无法确定该组件显示了什么行为。其次,您无法预测自己测试的结果(因为您不知道提供给测试的输入是什么)您应该同时测试这两个测试用例,但这两个测试用例都不属于单元测试 单元测试主要用于测试单个较小的部分,即类和方法。单元测试最好在构建过程中进行,而不需要任何人为干预。因此,作为单元测试的一部分,您应该模拟第三方Web服务。模拟的优点是,您可以使模拟对象以多种可能的方式运行,并测试您的类/方法,以确保它们处理所有可能的情况
当涉及多个系统时,测试用例属于系统/集成/功能测试。因此,作为系统/集成/功能测试的一部分,您应该从您的Web服务调用其他Web服务中的方法,并确保一切按预期工作。如果您试图将组件单元化,那么您应该模拟其他组件。我认为,单个组件的单元测试不应该依赖于其他组件。有关于单元测试的书籍。当涉及到单元测试时,没有绝对的真理或标准。有一些最佳实践,也有一些时候做不同的事情很方便。你能推荐一些模拟Web服务客户端创建教程吗。谢谢。很抱歉,我不知道任何专门针对web服务模拟的教程。但是如果你的代码设计得很好,你应该为第三方服务提供一个(Java)接口,这样你就可以很容易地用一个mock来替换实际的实现。。。我看到了这篇关于单元测试Web服务的文章,它说可以通过网络进行测试。。。此外,microsoft还建议转到服务器。。。