目录

省流:

正文 

一、同包名

解读

二、不同包名

三、其他写法


 

报错: 

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration,
 you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

 

省流:

main 和 test 需要同包名。 

正文 

一、同包名

test下的包名和main下的包名需要一致。

解读

通常测试类的代码如下: 

@RunWith(SpringRunner.class)
@MybatisPlusTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Rollback(false)
public class T1 {

    @Resource
    private EmpMapper empMapper;


    @Test
    public void t1() {}
}

        这样写的好处是,可以不用加载整个springboot组件,只加载spring和mybatis那块,测试数据库链路。

        他会扫描并加载main包下的Mapper类和xml文件,还有实体类。这样一来就不需要另外再去写实体类和sql了。

        想要在test目录下,正常使用main目录里的类,就需要保持目录的名字相同。

例如:

/main/java 下是 /com/ali/mapper/...

那么

/test/java 下也得是 /com/ali这个目录开头

具体使用,可以查看这篇文章:

junit单元测试 mybatis 单独测试 springboot_globalcoding的博客-CSDN博客

 

二、不同包名

在测试类加上  @SpringBootTest(classes = xxx.class) 这个注解。

@SpringBootTest(classes = T1.class)
@RunWith(SpringRunner.class)
@MybatisPlusTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Rollback(false)
public class T1 {

    @Resource
    private EmpMapper empMapper;

    @Test
    public void t1() {}
}

        这个注解是告诉springboot这是一个独立的测试类(意味着IOC容器独立)。在包名不同时,需要在/test/java目录下把Mapper类和xml文件还有实体类全部写一遍。(包名相同的情况下不需要)

        并且这个注解会启动大量组件。所以,如果不是做独立测试的情况下,并不推荐这样做。(通常不会做独立测试。通常都是测试数据库链路。)

三、其他写法

还有一种方法,但没试过:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {JPAConfig.class})

=======================分割线==========================

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration,
 you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test 

文章到此已经结束,以下是紫薯布丁

@RunWith(SpringRunner.class)
@MybatisPlusTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Rollback(false)
public class T1 {

    @Resource
    private EmpMapper empMapper;


    @Test
    public void t1() {}
}

@SpringBootTest(classes = T2.class)
@RunWith(SpringRunner.class)
@MybatisPlusTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Rollback(false)
public class T2 {

    @Resource
    private ClassMapper classMapper;

    @Test
    public void t2() {}
}

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {JPAConfig.class})
 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐