快速入门
简单案例第一篇
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对象。
环境搭建
添加依赖
<?xml version="1.0" encoding="UTF-8"?><projectxmlns="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><
版权归原作者 写的更好 所有, 如有侵权,请联系我们删除。