SpringBoot 集成JUnit

项目太大,不好直接测整个项目,一般都是切割成多个单元,单独测试,即单元测试。

直接在原项目上测试,会把项目改得乱七八糟的,一般是单独写测试代码。

进行单元测试,这就需要集成JUnit。


(1)在pom.xml中添加JUnit的依赖

<!--JUnit的起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <!--指定作用域为test,此依赖只在test时起作用-->
            <scope>test</scope>
        </dependency>

使用骨架、Spring Initializr创建项目时,往往自动导入了Junit的依赖,看一下pom.xml中有没有,没有就导入。


(2)在src/test/java中写单元测试

src/main/用来写项目,java放.java文件,resources放资源文件(根目录下放application.yml,static下放静态资源,templates下放模板引擎)。

src/test/用来写项目测试,java放单元测试,resources放资源文件。

把src/main/resources中的内容拷到src/test/resources,没有resources文件的就自己新建。

单元测试的类名一般是在原类名后加Test。

比如我要写com.chy.mapper.UserMapper的单元测试,在src/test/java下新建com.chy.mapper.UserMapperTest,包名保持一致,类名加Test。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)  //引导类的class对象
public class UserMapperTest {
    @Autowired  //自动注入要测试的类
    private UserMapper userMapper;

    @Test
    public void queryUserByIdTest(){
        //测试该类中的方法
        User user=userMapper.queryUserById(1);
        System.out.println(user);
    }

}

把要测试的类写成成员变量,使用@Autowired注入。

要测该类中的哪个方法,就写一个对应的方法来测试,在方法上标注@Test。

方法名一般是原方法名+Test。如果只测试一个方法,常把方法名直接写成test。

点左边的三角进行测试。


有些方法需要注入一些值,把要注入的值写成成员变量,对象用@Autowired注入,基本类型用@Value直接注入值。

如果需要在测试方法执行前后做一些处理:

@Before
    public void before(){

    }

    @Test
    public void test(){
       
    }

    @After
    public void after(){

    }

这个测试类中的所有测试方法都会执行前处理、后处理。


一般要保留测试代码,比如要测试queryUserById()、updateUserById(),是写对应的2个测试方法,不是先写queryUserById()来测试,测完就在这个方法的基础上改改,改成其他方法的测试,不是这样的。

同理,测试类都是在对应位置写、单独写,包也要保留,这些测试合起来就是整个项目的测试。

相关推荐