无法在 Spring Boot Test 类中模拟 jdbcTemplate

安娜

我正在使用 Spring Boot 和 Mockito 进行测试。我已经能够为服务层编写测试用例,并且它们工作正常。但是,DAO 层的测试用例没有。在执行测试用例时jdbcTemplate,被模拟和自动装配对象会给出null指针。以下是详细信息:

我的DAOTest班级:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = EcommerceApplication.class)
public classEcommerceDaoTest {

@InjectMocks
private IEcommerceDao ecommerceDao = new EcommerceDaoImpl();

@Mock
@Autowired
private JdbcTemplate as400JdbcTemplate;

@Before
public void setUp() throws Exception 
{
    MockitoAnnotations.initMocks(this);

}

@Test
public void checkOrderExistsTest() throws EcommerceException{
    Mockito.when(as400JdbcTemplate.queryForObject(queryForOrder,new Object[]
{"1000"}, int.class)).thenReturn(1);
    boolean exists = 
 ecommerceDao.checkOrderExists("1000");
    assertTrue(exists);
}
}

EcommerceDAOImpl.java:

@Override
public boolean checkOrderExists(String orderNo)throws EcommerceException{
boolean doesExist = false;
    int count = 0;
    try{
        count= as400JdbcTemplate.queryForObject(queryForOrder, new Object[]{orderNo}, int.class);
if(count >0){
doesExist = true;
}
    }
catch(Exception e){
}
return doesExist;
}

AS400Config.java:

    @Bean
    @Autowired
    public JdbcTemplate as400JdbcTemplate(@Qualifier("as400DataSource")DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

电子商务应用程序.java

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, 
HibernateJpaAutoConfiguration.class,
    DataSourceTransactionManagerAutoConfiguration.class })
@EnableTransactionManagement
@Import(As400Configuration.class)
public class EcommerceApplication {

public static void main(String[] args) {
    SpringApplication.run(EcommerceApplication.class, args);
}
}

当我运行测试用例时,我得到NullPointerExceptionas400JdbcTemplate. 该功能按原样运行良好。它只是 DAO 层的测试用例由于无法jdbcTemplate模拟/自动装配而失败

请让我知道我哪里出错了。

xyz
  1. 您不需要同时使用@Mock@Autowired仅使用@Mock

    @Mock private JdbcTemplate as400JdbcTemplate;

  2. 使用代替@RunWith(SpringRunner.class)-->@RunWith(MockitoJUnitRunner.class)

还要将模拟注入 DAO,您可以使用spring 测试中的ReflectionTestUtils

public static void setField(Class targetClass, String name, Object value)

@Before
public void setUp() throws Exception {
    MockitoAnnotations.initMocks(this);
    ReflectionTestUtils.setField(ecommerceDao ,"as400JdbcTemplate" , 
      as400JdbcTemplate);

}

@Mock
    private JdbcTemplate as400JdbcTemplate;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring Boot(> 1.1.0)中的多个DataSource和JdbcTemplate

来自分类Dev

无法运行spring-boot-test

来自分类Dev

带有Gradle的Spring Boot无法完成任务:test?

来自分类Dev

无法在Spring Boot 1.4中扩展WebMvcAutoConfigurationAdapter

来自分类常见问题

无法在Spring Boot 2.3.3中构建映像

来自分类Dev

spring-boot无法在docker中启动

来自分类Dev

无法在Spring Boot中读取JVM参数

来自分类Dev

在Spring Boot(Gradle)中无法记录日志

来自分类Dev

Spring boot 无法在Tomcat实例中启动

来自分类Dev

将Spring Boot JDBCTemplate连接到SQL Server(MSSQL)

来自分类Dev

使用Spring Boot JdbcTemplate获取java.lang.NullPointerException

来自分类Dev

Spring-Boot-jdbcTemplate对象未初始化

来自分类Dev

在每个spring boot @Test上重写单个@Configuration类

来自分类Dev

Spring Boot:无法配置

来自分类Dev

Spring @Transational无法回退jdbctemplate.update(PreparedStatementCreator,KeyHolder)

来自分类Dev

无法在TomcatConnectorCustomizer中为Spring Boot配置端口

来自分类Dev

Spring Boot无法在IntelliJ中运行单一测试

来自分类Dev

Spring Boot应用程序无法在Docker中链接领事

来自分类Dev

无法从Spring Boot中的/ static文件夹读取资源

来自分类Dev

Spring Boot @ConfigurationProperties无法从环境中检索属性

来自分类Dev

Rest Controller无法在Spring Boot App中识别GET请求

来自分类Dev

Spring Boot应用程序无法在Tomcat OpenShift中启动

来自分类Dev

无法在Docker中链接Consul和Spring Boot应用

来自分类Dev

无法在Spring Boot应用程序中配置ViewResolver

来自分类Dev

Intellij Spring Boot应用程序无法在Tomcat中运行

来自分类Dev

Spring Boot应用程序无法在CloudFoundry中启动

来自分类Dev

IntelliJ中的Spring Boot + thymeleaf:无法解析vars

来自分类Dev

在Spring Boot应用程序中无法解析表“'xx”

来自分类Dev

在Spring Boot(Cloud App)中无法连接到Oracle DB

Related 相关文章

  1. 1

    Spring Boot(> 1.1.0)中的多个DataSource和JdbcTemplate

  2. 2

    无法运行spring-boot-test

  3. 3

    带有Gradle的Spring Boot无法完成任务:test?

  4. 4

    无法在Spring Boot 1.4中扩展WebMvcAutoConfigurationAdapter

  5. 5

    无法在Spring Boot 2.3.3中构建映像

  6. 6

    spring-boot无法在docker中启动

  7. 7

    无法在Spring Boot中读取JVM参数

  8. 8

    在Spring Boot(Gradle)中无法记录日志

  9. 9

    Spring boot 无法在Tomcat实例中启动

  10. 10

    将Spring Boot JDBCTemplate连接到SQL Server(MSSQL)

  11. 11

    使用Spring Boot JdbcTemplate获取java.lang.NullPointerException

  12. 12

    Spring-Boot-jdbcTemplate对象未初始化

  13. 13

    在每个spring boot @Test上重写单个@Configuration类

  14. 14

    Spring Boot:无法配置

  15. 15

    Spring @Transational无法回退jdbctemplate.update(PreparedStatementCreator,KeyHolder)

  16. 16

    无法在TomcatConnectorCustomizer中为Spring Boot配置端口

  17. 17

    Spring Boot无法在IntelliJ中运行单一测试

  18. 18

    Spring Boot应用程序无法在Docker中链接领事

  19. 19

    无法从Spring Boot中的/ static文件夹读取资源

  20. 20

    Spring Boot @ConfigurationProperties无法从环境中检索属性

  21. 21

    Rest Controller无法在Spring Boot App中识别GET请求

  22. 22

    Spring Boot应用程序无法在Tomcat OpenShift中启动

  23. 23

    无法在Docker中链接Consul和Spring Boot应用

  24. 24

    无法在Spring Boot应用程序中配置ViewResolver

  25. 25

    Intellij Spring Boot应用程序无法在Tomcat中运行

  26. 26

    Spring Boot应用程序无法在CloudFoundry中启动

  27. 27

    IntelliJ中的Spring Boot + thymeleaf:无法解析vars

  28. 28

    在Spring Boot应用程序中无法解析表“'xx”

  29. 29

    在Spring Boot(Cloud App)中无法连接到Oracle DB

热门标签

归档