美文网首页
mockito与testng集成模拟测试用例

mockito与testng集成模拟测试用例

作者: igool | 来源:发表于2024-07-10 17:37 被阅读0次

       在现代软件开发中,自动化测试已经成为保证代码质量和稳定性的重要手段。Mockito作为一个流行的Java单元测试框架,常常与TestNG集成使用,以实现更为高效和简洁的测试。本文将深入探讨如何利用Mockito与TestNG进行集成模拟测试,帮助开发者更好地掌握这两者的结合使用。

一、什么是Mockito?

Mockito是一个用于Java的模拟框架,旨在简化测试过程。它允许开发者创建和配置模拟对象(Mock),并定义这些对象的行为和交互,从而隔离被测试代码的依赖项,实现独立测试。

主要功能

创建Mock对象

配置Mock对象的行为

验证Mock对象的交互

二、什么是TestNG?

TestNG是一个灵活而强大的测试框架,支持多种类型的测试,包括单元测试、集成测试和端到端测试。TestNG提供了丰富的注解、并行执行、依赖测试、数据驱动测试等特性,极大地增强了测试的灵活性和可维护性。

主要功能

丰富的注解支持(如@Test、@BeforeClass、@AfterMethod、@Parameters等)

并行执行测试

测试依赖管理

数据驱动测试

三、Mockito与TestNG集成的优势

Mockito与TestNG的集成可以充分利用两者的优势,实现更为高效和灵活的测试:

简化测试配置:利用TestNG的注解,可以轻松配置测试前后的初始化和清理工作。

提高测试效率:Mockito提供了简洁的API,方便创建和配置Mock对象,从而减少手工编写模拟代码的工作量。

增强测试可读性:结合TestNG的数据驱动测试和Mockito的Mock对象,可以实现更为清晰和易读的测试代码。

四、示例代码

下面是一个示例代码,展示了如何利用Mockito与TestNG进行集成模拟测试。

java 

源代码

以上代码是实现一个BASE图片或者图片地址转成本地地址

测试用例代码

testng参数配置

五、代码解析

注解解释:

@Mock private IdGenerateService idGenerateService;: 这个注解用于创建一个IdGenerateService的模拟对象,用于测试中模拟生成ID的服务。

@InjectMocks @Spy private PicHelper picHelper;:@InjectMocks注解将会自动注入@Spy注解的PicHelper对象,并尝试解决其依赖(例如idGenerateService)。@Spy注解表示picHelper对象是一个部分模拟对象,即保留其真实实现的同时可以部分模拟其方法。

初始化:

@BeforeClass public void init() { MockitoAnnotations.openMocks(this); }: 使用MockitoAnnotations.openMocks(this)初始化测试类,在测试方法运行之前会执行此方法,用于初始化被@Mock和@Spy注解的对象。

测试方法:

@Test @Parameters({"tempath"}) public void preparePara(String tempath): 这是一个测试方法,使用了参数化测试。ReflectionTestUtils.setField(picHelper, "tempath", tempath);用于设置picHelper对象的tempath属性值。

@Test(dependsOnMethods = "preparePara") @Parameters({"tempath"}) public void testGetJpgBaseImageByBase(String tempath) throws IOException: 另一个测试方法,依赖于preparePara方法执行后才会运行。这个方法测试了picHelper.getJpgBaseImageByBase(String)方法的功能。

when(idGenerateService.getGenerateIdByName(anyString())).thenReturn(123456789L);: 使用 Mockito 模拟idGenerateService的getGenerateIdByName方法,当任意字符串传入时,返回固定的长整型值123456789L。

byte[] imgBase = FileUtils.readFileToByteArray(new File("src/test/resources/zzm.png"));: 从测试资源目录读取zzm.png图片文件的字节数组。

String imgString = Base64.encodeBase64String(imgBase);: 将图片字节数组转换为 Base64 编码字符串。

String resultPath = picHelper.getJpgBaseImageByBase(imgString);: 调用被测试的方法picHelper.getJpgBaseImageByBase(String),传入 Base64 编码字符串,并接收返回的路径字符串。

String yyyyMmdd = DateFormatUtils.format(new Date(),"yyyyMMdd");: 获取当前日期的格式化字符串,用于构建预期路径。

String expectedPath = tempath+yyyyMmdd+File.separator+"123456789.jpg";: 根据测试参数tempath、日期和模拟生成的 ID 构建预期的路径字符串。

assertEquals(resultPath, expectedPath);: 断言实际返回的路径与预期路径相等,验证方法的正确性。

这段代码使用了 Mockito 进行对象的模拟和部分模拟,同时使用了参数化测试和文件操作,验证了PicHelper类的一个方法在给定输入条件下的正确性。

六、总结

        通过上述示例,我们可以看到Mockito与TestNG的集成使用不仅简化了测试配置,还提高了测试效率和可读性。对于开发者而言,掌握这两者的结合使用是编写高质量自动化测试的关键。

相关文章

  • k13–7/15 selenium04 - TestNG

    功能测试的流程: 分析需求 → 排测试计划 → 设计测试用例 → 执行测试用例 TestNG说明 TestNG 最...

  • 测试-TestNG.XML文件case1

    一、TestNG按顺序执行case 在testng.xml中,可以控制测试用例按顺序执行。 二、TestNG分组执...

  • TestNG依赖测试

    有时候,我们需要按顺序来调用测试用例, 那么测试用例之间就存在依赖关系。 TestNG支持测试用例之间的依赖

  • 批量执行测试用例

    想要批量执行测试用例,可以使用TestNG这个插件,配合maven使用。 1. 创建testng.xml文件 1)...

  • 接口测试之TestNG的使用摘录

    知识点 TestNG Hello World示例- 开始使用TestNG,创建一个简单的测试用例以及如何执行它。 ...

  • testNG

    1.testng.xml结构规则 2.TestNG注解 用于在测试类中注解: 3.Java文件的测试用例中通过获取...

  • springboot之MockMvc

    使用场景 用于对springboot应用实现集成模块测试。不依赖于web容器。 用法 测试的接口: 测试用例: 测...

  • 可复用测试用例研究(用例库)

    软件测试的关键环节是设计和执行测试用例。测试用例的质量与测试人员的技能、经验以及对被测软件的理解密切相关。如果测...

  • 测试组工作规范

    测试组工作规范 提测 根据tapd开发工作任务安排,各模块集成进dev分支前4天提供模块测试用例 各项目线完整提测...

  • 软件测试基本流程

    1.需求分析(产品经理) 2.编写测试用例(测什么,怎么测) 3.评审测试用例 4.搭建测试环境 5.等待开发提交...

网友评论

      本文标题:mockito与testng集成模拟测试用例

      本文链接:https://www.haomeiwen.com/subject/jndthjtx.html