快速入门
简单案例第一篇
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 {
// 测试代码
}文章来源:https://www.toymoban.com/news/detail-779838.html
测试类上写@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模板网!