单元测试spcok第一篇

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

快速入门

简单案例第一篇
https://tech.meituan.com/2021/08/06/spock-practice-in-meituan.html

测试类的运行器

SpockRunner和Sputnik该如何选择?
Sputnik和SpockRunner都是Spock框架中的类,用于运行Spock测试。
在早期的Spock版本中,测试运行器的类名是SpockRunner。但在后来的版本中,这个类被重命名为Sputnik。
因此,Sputnik和SpockRunner实际上是同一个类,只是在不同版本的Spock中有不同的名称。在编写Spock测试时,应该使用@RunWith(Sputnik.class)来指定测试类的运行器。

junit的单测中RunWith应该传什么?
在JUnit中,@RunWith注解用于指定测试类的运行器。你可以传入任何实现了Runner接口的类。以下是一些常见的选项:
JUnit4.class:这是JUnit 4的默认运行器,如果你没有指定@RunWith,那么就会使用这个运行器。
@RunWith(JUnit4.class)
public class MyTest {
// 测试代码
}
下面是junit提供的一个runner
@RunWith(Suite.class)
@SuiteClasses({ATest.class, BTest.class, CTest.class})
public class ABCSuite {
}
这段代码是JUnit的一个测试套件示例。
@RunWith(Suite.class)告诉JUnit这个类是一个测试套件,由Suite类来运行。
@SuiteClasses({ATest.class, BTest.class, CTest.class})指定了这个测试套件包含的测试类,这里包含了ATest、BTest和CTest三个测试类。
ABCSuite类本身不包含任何测试方法,它只是定义了一组要一起运行的测试类。当你运行ABCSuite时,JUnit会依次运行ATest、BTest和CTest中的所有测试。

Spring环境集成测试
@RunWith(SpringJUnit4ClassRunner.class):这个注解用于指定测试类的运行器,SpringJUnit4ClassRunner是Spring Test库提供的一个运行器,它可以在测试开始时创建Spring应用上下文。
@ContextConfiguration:这个注解用于指定Spring的配置类或配置文件,Spring会根据这些配置信息创建应用上下文。
@WebAppConfiguration:这个注解用于声明一个Web应用的上下文,它会创建一个WebApplicationContext而不是普通的ApplicationContext。
以下是一个例子:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppConfig.class)
@WebAppConfiguration
public class MyTest {
// 测试代码
}

SpringBoot环境集成测试
@RunWith(SpringRunner.class):这个注解用于指定测试类的运行器,SpringRunner是Spring Test库提供的一个运行器,它可以在测试开始时创建Spring应用上下文。
@SpringBootTest:这个注解告诉Spring Boot为测试创建一个完整的应用上下文。
@AutoConfigureMockMvc:这个注解用于自动配置一个MockMvc实例,这样你就可以方便地测试Spring MVC的控制器。
@TestPropertySource:这个注解用于指定一些属性源,这些属性源会添加到Spring的Environment中。你可以使用它来覆盖默认的配置属性。
以下是一个例子:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@TestPropertySource(locations = “classpath:test.properties”)
public class MyTest {
// 测试代码
}

测试类上写@SpringBootTest的作用?
在Spring Boot中,@SpringBootTest注解用于指示Spring Boot为测试创建一个完整的应用上下文。
具体来说,@SpringBootTest的作用包括:
自动搜索主配置类(通常是一个带有@SpringBootApplication注解的类),并基于该配置类创建应用上下文。
提供了一种模拟环境的方式,可以在测试中模拟命令行参数、Spring Boot配置和环境变量等。
集成了Spring Test和Spring Boot的测试功能,例如你可以使用@MockBean来创建和注入mock对象。文章来源地址https://www.toymoban.com/news/detail-779838.html

环境搭建

添加依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>spock-test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <!-- Spock测试依赖的版本 start -->
        <spock.version>1.3-groovy-2.4</spock.version>
        <groovy.version>2.4.21</groovy.version>
        <powermock.version>2.0.4</powermock.version>
        <!-- Spock测试依赖的版本 end -->
    </properties>
    <dependencies>
        <!--依赖Spring环境-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.20.RELEASE</version>
        </dependency>
        <!-- 测试用jar依赖 start (以下5个部分)-->
        <!-- 1.Spock 相关 -->
        <dependency>
            <groupId>org.spockframework</groupId>
            <artifactId>spock-core</artifactId>
            <version>${spock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.spockframework</groupId>
            <artifactId>spock-spring</artifactId>
            <version>${spock.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- 2.Groovy 相关 -->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <type>pom</type>
            <version>${groovy.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>groovy-test-junit5</artifactId>
                    <groupId>org.codehaus.groovy</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>groovy-testng</artifactId>
                    <groupId>org.codehaus.groovy</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 3.PowerMock 相关-->
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito2</artifactId>
            <version>${powermock.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>1.16.18</version>
                        </path>
                        <!-- 其他注解处理器 -->
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <!-- 测试Plugins Start -->
            <plugin>
                <groupId>org.codehaus.gmavenplus</groupId>
                <artifactId>gmavenplus-plugin</artifactId>
                <version>1.6.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>addSources</goal>
                            <goal>addTestSources</goal>
                            <goal>generateStubs</goal>
                            <goal>compile</goal>
                            <goal>generateTestStubs</goal>
                            <goal>compileTests</goal>
                            <goal>removeStubs</goal>
                            <

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

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

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

相关文章

  • Springboot单元测试之第一部分: Dao层的单元测试

    前言 :本次demo写的关于图书管理的增删改查分页等功能进行单元测试 数据库 :数据库的表结构及数据如下: 1、Pojo实体类 2、Dao数据层 简介:使用 MybatisPlus 的标准通用接口 BaseMapper 快速进行开发 3、编写Dao层的单元测试用例 1) 、根据id查询数据的测试: 2) 、插入数据的

    2024年02月15日
    浏览(36)
  • 软件测试第一套之单元测试——题目三

    目录                 邮箱注册需要填写邮箱地址和密码 题目要求: 定义类 测试类  邮箱注册需要填写邮箱地址和密码 题目要求:

    2024年02月04日
    浏览(30)
  • 工作记录------单元测试(持续更新)

    之前的工作中从来没有写过单元测试,新入职公司要求写单元测试, 个人觉得,作为程序员单元测试还是必须会写的 于此记录一下首次编写单元测试的过程。 在src目录下,创建与main同级的目录。 其中test/java目录下编写测试类 test/resources目录下放置测试所需要的配置文件。

    2024年02月14日
    浏览(33)
  • 年轻人的第一款单元测试框架———vitest

    一款合格的开源项目是避免不了单元测试的,这也是这几年单元测试的热度居高不下的原因。而在今年的 state of js 2022 中,我们可以看见在 代码库层级列表 中, vitest 飞升一跃,直接到了第二名,仅次于同门师兄弟 vite ,而 element plus unocss 等知名开源项目都采用了vitest进行单

    2024年01月17日
    浏览(43)
  • 记一篇Mockito MyBatisPlus 单元测试时报can not find lambda cache问题

    刚才在写单测时,由于代码中用到了queryWrapper.orderByDesc()方法,报错com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not find lambda cache for this entity [com.orm.mybatis.entity.Stusent] 用到了queryWrapper.orderByDesc()方法,导致单测报错。 在单测类中写@Before 方法,问题解决

    2024年02月13日
    浏览(37)
  • Flutter 中的单元测试:从工作流基础到复杂场景

    对 Flutter 的兴趣空前高涨——而且早就应该出现了。 Google 的开源 SDK 与 Android、iOS、macOS、Web、Windows 和 Linux 兼容。单个 Flutter 代码库支持所有这些。单元测试有助于交付一致且可靠的 Flutter 应用程序,通过在组装之前先发制人地提高代码质量来确保不会出现错误、缺陷和缺

    2024年02月08日
    浏览(52)
  • 云原生 黑马Kubernetes教程(K8S教程)笔记——第一章 kubernetes介绍——Master集群控制节点、Node工作负载节点、Pod控制单元

    参考文章:kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念、组件和工作原理。 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为

    2024年02月04日
    浏览(53)
  • 【chatGPT】使用ChatGPT进行工作提效

    参加新星计划2023【使用ChatGPT进行工作提效】记录的写笔记! 借助ChatGPT自动制作PPT:https://blog.csdn.net/Catherinemin/article/details/130846117 ChatgGPT生成Excel统计公式:https://blog.csdn.net/Catherinemin/article/details/130852953 ChatgGPT生成Excel提取字符公式:https://blog.csdn.net/Catherinemin/article/details/1

    2024年02月06日
    浏览(37)
  • 工作3年,还不会写单元测试?新技能get(2),帮你突破瓶颈

    比如常见的JavaWeb项目代码中,Controller层,DAO层以及其他仅涉及接口转发相关的方法,往往不需要单测覆盖。而业务逻辑层的各种Service则需要重点测试。 对于自定义的工具类,正则表达式等固定逻辑,也是必须要测试的。因为这部分逻辑一般都是公共且通用的,一旦逻辑错误

    2024年04月14日
    浏览(42)
  • 让AI帮你工作(3)--学习提效

    今天会给大家带来两款对学习工作提效的两款chatgpt相关的工具,同时会给围绕chatgpt做产品的同学带来一个开发框架。 背景: 在工作和学习中我们有很多时间是在和视频、网页打交道。在youtube上看国外著名大学的学习课程、看看歪果仁他们在玩什么新东西,或者是用网页搜

    2024年02月09日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包