开发经验/踩坑记录

您所在的位置:网站首页 小红书号是微信号码 开发经验/踩坑记录

开发经验/踩坑记录

2023-03-22 02:05| 来源: 网络整理| 查看: 265

官方文档如何编写一个单元测试用例如何编写一个集成测试用例如何mock static的方法?如何不启动spring整体工程,在本地实际连db测试dao层代码?

官方文档

javaapi:https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html官网:https://site.mockito.org/github:https://github.com/mockito/mockito

如何编写一个单元测试用例

https://www.vogella.com/tutorials/Mockito/article.html#mockitousage

如何编写一个集成测试用例

这个不同框架不同,可以参考spring boot的写法

如何mock static的方法?

https://asolntsev.github.io/en/2020/07/11/mockito-static-methods/

注意:将业务逻辑写在 try 块中。

如何不启动spring整体工程,在本地实际连db测试dao层代码?

方法思路:

采用jdbc 方式直连采用反射机制 动态 实例化类 及其属性

mybatis sqlSession相关解释见 https://www.yuque.com/antone/zv3ypu/tl15md

@Slf4jpublic class MutiDataSourceTest { private static final Logger LOGGER = LoggerFactory.getLogger(MutiDataSourceTest.class); private static Map dataSourceContext = new HashMap(); //@Getter private static Map sqlSessionFactoryContext = new HashMap(); private static Map dataSourceTypeToConfig = new HashMap(); private static Map aClass = null; try { aClass = Class.forName(implClassName); } catch (ClassNotFoundException e) { LoggerUtil.warn(logger, "not found impl class for:{0},skip create instance", tClass.getName()); // e.printStackTrace(); } return aClass; } return tClass; } @SneakyThrows private void populateField(Field field, Object target) { Class declaringClass = field.getType(); LoggerUtil.debug(logger, "field class:{0}", declaringClass); Object fieldValue = null; if (declaringClass.getName().contains("Service")) { fieldValue = createService(declaringClass); } else if ((declaringClass.isAnnotationPresent(EXPLORER.class))) { fieldValue = super.getMapper(declaringClass); } else { fieldValue = createObject(declaringClass); } field.setAccessible(true); field.set(target, fieldValue); LoggerUtil.info(logger, "inject field:{0} value:{1}", field.getName(), fieldValue); } private void addIntercepter() { if (this.added) { return; } for (DataSourceType dataSourceType : DataSourceType.values()) { getSqlSessionFactoryByType(dataSourceType); } //Map sqlSessionFactoryContext = getSqlSessionFactoryContext(); //for (Entry entry : sqlSessionFactoryContext.entrySet()) { // SqlSessionFactory sqlSessionFactory = entry.getValue(); // DataSourceType dataSourceType = entry.getKey(); // PageInterceptor interceptor = new PageInterceptor(); // Properties properties = new Properties(); // properties.put("helperDialect", "mysql"); // properties.put("reasonable", "true"); // properties.put("supportMethodsArguments", "true"); // properties.put("params", "count=countSql;pageNum=pageNumber;pageSize=pageSize;"); // interceptor.setProperties(properties); // sqlSessionFactory.getConfiguration().addInterceptor(interceptor); // if (dataSourceType == DataSourceType.ADB) { // PartitionParamInterceptor partitionParamInterceptor = new PartitionParamInterceptor(); // partitionParamInterceptor.setPartitionService(createService(PartitionService.class)); // sqlSessionFactory.getConfiguration().addInterceptor(partitionParamInterceptor); // } //} this.added = true; }}

测试类只需要继承ServiceTest即可



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3