【问题标题】:mybatis test not finding mappermybatis 测试没有找到映射器
【发布时间】:2022-08-09 20:45:42
【问题描述】:

我正在尝试使用 spring boot 和 mybatis 进行简单的 Junit 5 测试。@Autowired 找不到我的映射器

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type \'fehrm.servicelayer.mapper.EnqueueStatusDao\' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1790)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1346)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300)

我在用着 弹簧启动:2.6.1 JUnit 5.8.1 mybatis-starter 2.2.0

当然,这一切都适用于应用程序..只是在让映射器在测试中自动装配时遇到问题..

这是测试类


import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.mybatis.spring.boot.test.autoconfigure.MybatisTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.context.annotation.Import;

import fehrm.servicelayer.domain.EnqueueStatus;
import fehrm.servicelayer.mapper.EnqueueStatusDao;



@MybatisTest
@ActiveProfiles(\"test\")
@Import(EnqueueStatusDao.class)
public class EnqueueStatusDaoTest {

    @Autowired
    private EnqueueStatusDao enqueueStatusDao;
    

    
    @Test
    public void testSelect()
    {
        EnqueueStatus es = enqueueStatusDao.selectEnqueuePatient(\"1000000050\");
         Assertions.assertNotNull(es);
    
    }
    
    @Test
    public void testDelete()
    {
        enqueueStatusDao.delete(\"1000000050\");
        EnqueueStatus es = enqueueStatusDao.selectEnqueuePatient(\"1000000050\");
        Assertions.assertNull(es);
    }
    
    
}

我一直遵循mybats-autoconfiture 的指示

其中提到在某些包中添加一个 @SpringBootApplcation 类作为测试文件夹。我已经完成了,结果是上面的错误..

如果我删除 @SpringBootApplication 我会收到此错误

Could not detect default configuration classes for test class [com.fehrm.servicelayer.mapper.EnqueueStatusDaoTest]: EnqueueStatusDaoTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.

    标签: spring-boot mybatis junit5 spring-mybatis


    【解决方案1】:

    如果您的映射器不在@SpringBootApplication 的子包中,那么自动配置将找不到它们,因为基础包不包含它们,但您可以通过@AutoConfigurationPackage 明确指定所有相关的基础包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 2016-07-29
      • 2012-10-13
      相关资源
      最近更新 更多