赞
踩
简单案例第一篇
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"?> <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> <
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。