Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/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
Java 模拟是单元测试的重要部分吗?_Java_Web Services_Unit Testing_Jax Ws - Fatal编程技术网

Java 模拟是单元测试的重要部分吗?

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服务。如果将服务包括在单元测试中,但测试失败,则不知道问题是在代码中还是在外部web服务中

  • 您的测试独立于环境。如果Internet连接曾经中断,或者您想在根本没有Internet访问的机器上进行测试,那么您的测试仍然有效

  • 在不实际连接到web服务的情况下,您的测试将大大加快。这看起来可能不是什么大事,但如果你有很多测试(你应该这么做),它真的会让人恼火

  • 您还可以通过让模拟发送意外事件来测试单元的健壮性。这在现实世界中总是可能发生的,如果发生了,您的web服务应该反应良好,而不仅仅是崩溃。在使用真正的web服务时,无法测试这一点

  • 然而,也有集成测试。在这里,您测试完整的设置,将所有组件放在一起(集成)。在这里,您将使用真正的web服务而不是模拟服务


    这两种测试都很重要,但单元测试通常会更早、更频繁地完成。它可以(也应该)在创建系统的所有组件之前完成。集成测试需要在所有大多数组件中取得最少的进展。

    模拟通常是单元测试组件(具有依赖组件)中必不可少的一个步骤。这是因为在单元测试中,您仅限于测试您的代码是否正常工作(按照合同中的说明执行)。如果此方法在尝试执行其合同部分时依赖于其他组件正确执行其部分,则完全可以模拟该部分(假设它们正确工作)


    如果你不模仿其他依赖部分,你很快就会遇到问题。首先,您无法确定该组件显示了什么行为。其次,您无法预测自己测试的结果(因为您不知道提供给测试的输入是什么)

    您应该同时测试这两个测试用例,但这两个测试用例都不属于单元测试

    单元测试主要用于测试单个较小的部分,即类和方法。单元测试最好在构建过程中进行,而不需要任何人为干预。因此,作为单元测试的一部分,您应该模拟第三方Web服务。模拟的优点是,您可以使模拟对象以多种可能的方式运行,并测试您的类/方法,以确保它们处理所有可能的情况


    当涉及多个系统时,测试用例属于系统/集成/功能测试。因此,作为系统/集成/功能测试的一部分,您应该从您的Web服务调用其他Web服务中的方法,并确保一切按预期工作。

    如果您试图将组件单元化,那么您应该模拟其他组件。我认为,单个组件的单元测试不应该依赖于其他组件。有关于单元测试的书籍。当涉及到单元测试时,没有绝对的真理或标准。有一些最佳实践,也有一些时候做不同的事情很方便。你能推荐一些模拟Web服务客户端创建教程吗。谢谢。很抱歉,我不知道任何专门针对web服务模拟的教程。但是如果你的代码设计得很好,你应该为第三方服务提供一个(Java)接口,这样你就可以很容易地用一个mock来替换实际的实现。。。我看到了这篇关于单元测试Web服务的文章,它说可以通过网络进行测试。。。此外,microsoft还建议转到服务器。。。