Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 如何使用Mockito进行系统测试?我们应该吗?_Java_Unit Testing_Spring Boot_Mockito_System Testing - Fatal编程技术网

Java 如何使用Mockito进行系统测试?我们应该吗?

Java 如何使用Mockito进行系统测试?我们应该吗?,java,unit-testing,spring-boot,mockito,system-testing,Java,Unit Testing,Spring Boot,Mockito,System Testing,我的项目包括各种使用第三方API的spring boot@服务 我们已经为每一个这样的服务编写了一个模拟类,并以Spring Boot选择模拟类而不是真实类的方式运行系统测试(使用@Profile(“test”)) 其动机是: 仅测试逻辑(即使这可以通过单元测试完成) 根据经验测试系统是线程安全的 我们不能广泛使用我们的API(速率限制),但我们希望在足够多的项目上运行我们的系统 我的问题是: 对于系统测试,您会提倡这种方法吗?(所有组件都是模拟的) 如果是这样,像Mockito这样的模拟框架能

我的项目包括各种使用第三方API的spring boot
@服务

我们已经为每一个这样的服务编写了一个模拟类,并以Spring Boot选择模拟类而不是真实类的方式运行系统测试(使用
@Profile(“test”)

其动机是:

  • 仅测试逻辑(即使这可以通过单元测试完成)
  • 根据经验测试系统是线程安全的
  • 我们不能广泛使用我们的API(速率限制),但我们希望在足够多的项目上运行我们的系统
  • 我的问题是:

  • 对于系统测试,您会提倡这种方法吗?(所有组件都是模拟的)
  • 如果是这样,像Mockito这样的模拟框架能做到这一点吗?Mockito的全部要点不是自己编写模拟类,而是如何在一个服务被多个bean使用的系统测试中完成它

  • 这是一种很好的单元测试服务的方法,方法是模拟服务对外部服务的调用。您可能希望将测试分为
    单元
    测试和
    集成
    测试。通常,单元测试通过使用带有
    @Profile
    (正如您所做的)的存根类或使用类似mockito的模拟库来模拟任何外部服务调用,并模拟服务的返回值

    在集成测试中,这将是一个更好的系统测试,您将使用存根文件,这些存根文件通过
    控制器
    或模拟外部服务响应的模拟库(即WireMock)提供。如果您的外部API返回JSON,则可以使用
    控制器
    或模拟库来提供实际的JSON响应。通过这样做,您正在测试您的服务是否真的进行了API调用,并处理了存根结果。您可以让服务调用控制器或WireMock URL,而不是调用实际的API URL