当前位置:   article > 正文

单元测试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对象。

环境搭建

添加依赖

<?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>
                            <
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/575782
推荐阅读
相关标签