有什么网站做打印店,中文域名网站 被搜索,完美动力培训价格表,农产品网站建设投标书这里以github上一个microservice的demo代码为例#xff0c;来看看如何为一个完整的服务编写单元测试。具体代码如下所示#xff0c;我们重点查看一下catalog和customer#xff0c;order中的单元测试有哪些。 首先来看catalog服务的单元测试,这个服务下面主要编写了CatalogWe…这里以github上一个microservice的demo代码为例来看看如何为一个完整的服务编写单元测试。具体代码如下所示我们重点查看一下catalog和customerorder中的单元测试有哪些。 首先来看catalog服务的单元测试,这个服务下面主要编写了CatalogWebIntegrationTest.java和RepositoryTest.java。下图是CatlogWebIntegrationTest的代码左边是RunWithSpringBootTest等注解ActiveProfile的作用时指定使用application-test.properties配置文件中的值。setup()中初始化了RestTemplate查询了一个iPodNano。
右边是具体的两个集成测试集成测试本质是通过restTemplate调用应用接口验证接口返回的内容。默认情况下Spring Boot 使用 H2 数据库配置 DataSource bean具体配置可以在 application.properties 或 application.yml 文件中设置。通常集成测试的配置文件会使用 H2 数据库配置来进行测试以确保测试是快速且独立的。理论上来说如果使用H2数据库因为是内存数据库每次运行测试前都需要自动准备测试数据以下面的的代码为例在Before中应该先往H2数据库中插入数据这样才能保证Test中调用Get请求的时候能获取到期望的数据。所以下面的自动化测试理论上还需要优化不能直接在setup()部分通过查询获取测试数据因为可能数据库中并没有nameiPod nano的数据。 接着再看看RepositoryTest.java.这也是个集成测试调用实例化的itemRepository对象获取数据并校验结果这个测试的问题也是没有在Before阶段准备测试数据即提前往数据库中插入数据进行测试。 Customer服务中包含集成测试和契约测试集成测试和上面Catalog服务基本相似不再重复说明对于契约测试现在spring框架提供了专门生成契约测试的包所以老的编写契约测试的方式也不再review忽略掉。接下来看看Eureka-server服务的测试。如下所示 可以看到也是一个集成测试LocalServerPort注解是用于获取应用启动时生成的随机端口如果port设置了值则用自定义port值。测试中用restTemplate调用了服务的两个接口查看返回的response是否是200.201等。这里因为测试的是eureka server集成测试保证服务能正常启动即可。
order服务中的集成测试和catalog服务中集成测试基本一致所以也不用再次review。可以看到对于一个完整的应用编写单元或者集成测试基本就是常用的几个注解。运用前面介绍的知识完成可以为真实项目服务编写完成的单元测试或者集成测试。
单元测试、集成测试、契约测试传送门
单元测试之- mock工具mockito_taoli-qiao的博客-CSDN博客单元测试之 - Spring框架提供的单元/集成测试注解_taoli-qiao的博客-CSDN博客
契约测试之 - 使用Pact-JS编写契约测试_taoli-qiao的博客-CSDN博客