单元测试之 - Review一个微服务的单元测试

这篇具有很好参考价值的文章主要介绍了单元测试之 - Review一个微服务的单元测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里以github上一个microservice的demo代码为例,来看看如何为一个完整的服务编写单元测试。具体代码如下所示,我们重点查看一下catalog和customer,order中的单元测试有哪些。

单元测试之 - Review一个微服务的单元测试,单元测试,单元测试

首先来看catalog服务的单元测试,这个服务下面主要编写了CatalogWebIntegrationTest.java和RepositoryTest.java。下图是CatlogWebIntegrationTest的代码,左边是@RunWith,@SpringBootTest等注解,@ActiveProfile的作用时指定使用application-test.properties配置文件中的值。setup()中初始化了RestTemplate,查询了一个iPodNano。

右边是具体的两个集成测试,集成测试本质是通过restTemplate调用应用接口,验证接口返回的内容。默认情况下,Spring Boot 使用 H2 数据库配置 DataSource bean,具体配置可以在 application.properties 或 application.yml 文件中设置。通常,集成测试的配置文件会使用 H2 数据库配置来进行测试,以确保测试是快速且独立的。理论上来说,如果使用H2数据库,因为是内存数据库,每次运行测试前都需要自动准备测试数据,以下面的的代码为例,在@Before中应该先往H2数据库中插入数据,这样才能保证@Test中调用Get请求的时候,能获取到期望的数据。所以,下面的自动化测试理论上还需要优化,不能直接在setup()部分通过查询获取测试数据,因为可能数据库中并没有name=iPod nano的数据。

单元测试之 - Review一个微服务的单元测试,单元测试,单元测试单元测试之 - Review一个微服务的单元测试,单元测试,单元测试

 接着再看看RepositoryTest.java.这也是个集成测试,调用实例化的itemRepository对象获取数据,并校验结果,这个测试的问题也是没有在@Before阶段准备测试数据,即提前往数据库中插入数据进行测试。

单元测试之 - Review一个微服务的单元测试,单元测试,单元测试

 Customer服务中包含集成测试和契约测试,集成测试和上面Catalog服务基本相似,不再重复说明,对于契约测试,现在spring框架提供了专门生成契约测试的包,所以,老的编写契约测试的方式也不再review,忽略掉。接下来看看Eureka-server服务的测试。如下所示:

单元测试之 - Review一个微服务的单元测试,单元测试,单元测试 可以看到,也是一个集成测试,@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博客文章来源地址https://www.toymoban.com/news/detail-624959.html

到了这里,关于单元测试之 - Review一个微服务的单元测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一个简单好用的C语言单元测试框架-Unity

    Unity是一个用于C语言的轻量级单元测试框架。它由Throw The Switch团队开发,旨在简化嵌入式系统的单元测试。单元测试中单元的含义,单元就是人为规定的最小的被测功能模块,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。在

    2024年01月21日
    浏览(58)
  • 一个简单好用的C++语言单元测试框架-GoogleTest

    GoogleTest 是由 Google 开发的一个用于编写 C++ 单元测试的框架。单元测试中单元的含义,单元就是人为规定的最小的被测功能模块,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。在实际项目中,单元测试往往由开发人员完成。

    2024年01月19日
    浏览(97)
  • Spring Boot进行单元测试,一个思路解决重启低效难题!

    所谓单元测试就是对功能最小粒度的测试,落实到JAVA中就是对单个方法的测试。 junit可以完成单个方法的测试,但是对于Spring体系下的web应用的单元测试是无能为力的。因为spring体系下的web应用都采用了MVC三层架构,依托于IOC,层级之间采用了依赖注入的方式来进行调用。如

    2024年02月05日
    浏览(49)
  • NSubstitute:一个简单易用、灵活多变的.NET单元测试模拟框架

    推荐一个简单易用、灵活多变的.NET单元测试模拟框架,让开发者能够更轻松地进行单元测试。 NSubstitute是一个开源的.NET单元测试模拟类库,该框架设计的主要目标是提供一个简单明了、易用性强、贴近自然语言的模拟测试框架。它使得开发者能够专注于测试工作,而不是纠

    2024年02月07日
    浏览(48)
  • 如何使用PHPUnit编写一个PHP单元测试-简单的代码示例

    在软件开发过程中,单元测试是一种重要的测试方法,可以确保代码的质量和可靠性。在PHP开发中,也可以通过编写单元测试来验证代码的正确性。下面将介绍一些编写PHP单元测试的基本步骤和常用工具。 首先,你需要一个PHP单元测试框架,比如PHPUnit。PHPUnit是PHP社区最流行

    2024年02月04日
    浏览(57)
  • 测试中调用别人的服务,单元测试写法

    在Java中,进行单元测试时调用别人的服务,可以使用单元测试框架如JUnit,并结合模拟框架如Mockito来模拟或替代外部服务。 以下是一个示例,展示了在Java中进行单元测试时调用外部服务的写法: ```java import org.junit.Test; import static org.mockito.Mockito.*; public class MyServiceTest {    

    2024年02月04日
    浏览(40)
  • 在一个maven项目中使用maven命令进行junit单元测试

    如何在一个maven项目中使用maven命令进行junit单元测试? 首先确定一个maven项目的结构: 包含源代码目录src/main/java. 配置目录src/main/resources. 测试代码目录src/test. 目录结构可视化如下: 假定demo.java内容如下所示 我们要测试这个demo类, 可以在demoTest.java中写以下代码 然后就可以通过

    2023年04月21日
    浏览(55)
  • 基于MSTest框架创建一个简单的C#单元测试(Visual Studio 2019版)

    目录 1、环境准备 2、创建一个被测试项目 3、创建单元测试项目 4、执行测试 5、说明   环境: IDE: Visual Studio 2019 单元测试框架:MSTest .NET 版本:.NET Core 3.1 Test.Sdk版本:Microsoft.NET.Test.Sdk 16.9.4 目的: 编写单元测试方法以验证   BankAccount   类的   Debit   方法,至少需要检查

    2023年04月26日
    浏览(82)
  • 在ubuntu系统,用QTestLib 做Qt单元测试,请给我一个入门的教程例子

    非常好,下面我将为您介绍在 Ubuntu 系统下使用 QTestLib 进行 Qt 单元测试的入门教程。QTestLib 是 Qt 的自带的单元测试框架,完全集成于 Qt 环境中,易于使用。 我们将以 Qt Creator 为例,分为以下几个步骤: ## 1. 新建 Qt 控制台应用程序 在 Qt Creator 中新建一个 Qt 控制台应用程序

    2024年01月19日
    浏览(46)
  • 一文搞懂Go gRPC服务Handler单元测试

    在云原生时代和微服务架构背景下,HTTP和RPC协议成为服务间通信和与客户端交互的两种主要方式。对于Go语言而言,标准库提供了net/http/httptest包,为开发人员提供了便捷的方式来构建服务端HTTP Handler单元测试的测试脚手架代码,而无需真正建立HTTP服务器,让开发人员可以聚

    2024年02月04日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包