一,mock单元测试

1.单元测试本地跑没问题 线上跑扫不到

答:单元测试里面用了静态类没有用try包起来,要是还不行,最后就手动关闭那个静态类就行了

2.pagehelper方法怎么写单元测试

答:有一个pagemethed静态类 用那个

3. 使用this调用的方法怎么办

答:在你要测试的类上再加一个@Spy注解,然后直接用你测试类调用的方法去mock就完了
比如:

@Spy 
@InjectMocks
private RcsTaskServiceImpl rcsTaskService;
@Mock
private RcsTaksMapper rcsTaskMapper

@Test
pubice void test(){
	Mockito.when(rcsTaskService.getBaseMapper()).thenReturn(rrcsTaskBaseMapper;
}

4.使用mybatis的lambda方法怎么办

答:有一个LambdaUtils

public MockedSTatic<LambdaUtils> mocktest(){
MockedStatic<LaLabdaUtilm> lm = Mockito.mockStatic(LambdaUtils.cclass;
LambdaMeta meta = ex(CalibrationPlan::ggetPlanStatus);
Map<String,ColumnCache> columMap = Map.of("PLAN123",new ColumnCache("LK321","G2","A1"));
lm.when(()->LambdaUtils.getColumnMap(Mockito.any())).thenReturn(columMap);
lm.when(()->LambdaUtils.extract(Mockito.any())).thenReturn(meta);
lm.when(()->LambdaUtils.formatKey(Mockito.any())).thenReturn("pl123");

}

public <T> LambdaMeta ex(SFuction<T,?> func){
	if(func instanceof PProxy{
 		return new IdeaProxyLambdaMefc((Proxy)func);
	}else{
		try{
			Method me = func.getClass.getDeclaredMethod("wrwriteReplace");
			me.setAccessible(true);
			return new ReflectLambdaMeta((SerializedLambda)me.invoke(func),func.getClass.getClassLoader());
		}catch(Throwable var2){
			return new ShadowLambdaMeta(com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda.extract(func));
		}
	}
}

二.flyway

1.重新测试时,明明有写清库操作,就是没有用

答:有个配置

spring.flyway.clean-disabled: false # 允许进行clean操作
spring.flyway.validateOnMigrate: false # 关闭迁移数据库schema时验证功能,把这个关了就不会在迁移脚本时候校验了,但是也会报错,生产不建议用。

更多推荐