JUnit测试预期异常

在编写测试案例的时候,我们可能需要全量覆盖代码逻辑,当然也包含我们做的异常判断逻辑,此时我们就需要在JUnit中命中异常逻辑,但是测试结果还要是绿色通过的

1.通过给 @Test 传参实现,这种写法不够严谨,因为只能定位异常类型,不能定位到更精准的异常信息,代码片段如下: read more

基于Vue进行web开发的前端常见错误

* 值设置缺少冒号(如采用ESLint等进行代码校验可避免此问题出现)

Vue开发过程中,一般情况下,只有在属性为变量时才会在属性前添加冒号,如直接填写为属性值则不添加冒号;
但也有一些特殊情况,例如进行tree开发时使用的indent属性,按照一般情况的说法,此属性设置应如下:

indent=“8”

这个时候如果打开页面F12会看到报类型错误

错误原因:该字段的值类型应为number,可我们填写的类型是string

解决办法:在前添加冒号

:indent=“8”

相同的情况还有应为boolean类型却填写String类型等,解决办法同上

* 不同环境相同代码某一环境显示异常,相关错误信息不再展示(基础数据未及时更新)

此种情况第一反应为:数据问题或配置问题

因为配置问题造成此种情况的可能性相对较小,一般出现在首次部署的时候,后期一旦调通之后几乎不会发生变化

下面来说下数据问题引起异常的情况

因每个系统业务不同,所以针对业务数据的排查可结合自己的业务进行分析

剩下的基本就是系统参数或数据字典了(暂时只考虑到了这些情况,如有补充可留言)

举例说明下我这边遇到的一个问题

有一个页面展示,内置table,table有一个类型字段,后台传给我的是类型的代码,此时我需要根据数据字典进行值映射,添加对应的数据字典到库中,好的页面开发完成。这个时候打包部署,页面显示异常,要现在来说很明显是部署后的测试库或生产库数据字典的问题,但我们很可能因为一个小的疏忽花费大量的时间去解决

* 变量赋值成功,但页面无法显示

场景说明:

data:{A:null,B:null,C:null}//有ABC两个字段,假设A字段为登录名,B字段为所属部门,需要通过选择A来得到B的值,C用来保存其他信息

新增和修改共用一套组件

因为新增和修改公用一套组件,为了防止修改后新增表单元素出现上次修改的值,所以我需要在点击新增的时候,初始化data:

data={}//出错原因

设置初始化之后,选择下拉框A的值,通过监听事件给B赋值,但页面没有改变显示,反复查看,B已经得到了值

造成错误的原因就是因为初始化的方式不对,在初始化时我直接为data重新赋值,相当于原来的data已经不存在了,原来的ABC也不存在了,所以VUE无法去监听B发生了变化无法刷新页面,因为他根本就是两个B

解决办法:
写一个通用的clear方法

clearData(data){
  for(var k in data){
    data[k]=null;
  }
  return data;
}
* 后续如遇到其他类型的错误会持续更新...

Oracle修改表字段类型报错

错误信息:
[Err] ORA-22858: invalid alteration of datatype

原因:
oracle对该字段类型进行了限制

解决方案:
1.删除掉该字段保存
2.重新添加该字段并设置为想要修改的值
相关java错误信息:
ORA-01461:仅可以插入LONG列的LONG值赋值

原因:
字段类型错误导致数据无法添加

解决方案:
举例:
原字段类型为varchar2改为clob文本类型

SpringBatch读取excel异常

摘取关键报错信息:
1.Failed to initialize the reader
2.Failed to find end of row/cell records
3.Step failure: the delegate Job failed in JobStep.

根据异常信息可以得出,引起异常的原因为读取文件时有空行或空列出现
此处以excel为例:
解决途径:
1.Ctrl+A查看覆盖范围是否超出有效值部分
例如有效列只有1列,Ctrl+A后覆盖了两列,那么第二列就是引起错误的原因
清空第二列的内容重新执行
2.如没有1中情况或1中无效
复制有效值到新建excel中并对新建excel进行批处理操作

Java异常No Hibernate Session bound to thread,…

报错信息:
No Hibernate Session bound to thread, 
and configuration does not allow creation of non-transactional one here

今天对一个已完成的项目进行开发,主要针对一张表进行增删改查操作

在开发时没有按照项目已有的格式,例如java的分类规则等

所编辑的代码也没有任何错误,但只要这部分代码被调用就报错

后将此部分代码改为与项目其他部分相同的规则重新调用就没有报错了

虽然写出来读一下感觉是很简单的错误,甚至不是错误
但在实际编码过程中因为一个小问题而影响开发进程的事是很常见的

所以,编码需谨慎!

IllegalArgumentException解决

最近经常性搞一些老项目,老技术,算是了解经典了
那么在这个过程中经常会出现版本不匹配的问题

例如这次,我电脑上的jdk是1.8的
练习的技术使用的是1.7的,虽无明显报错
但是无法正常执行

启动过程一直报IllegalArgumentException

解决办法,重装jdk1.7

为了不走弯路,希望大家在开发过程中一定不要偷懒,看清楚环境要求

同样的代码只有你运行报错

条件一:相同的代码且是web项目
条件二:maven package正常,启动正常
条件三:点击某选项报错
今天这个异常我纠结了半天,代码是刚拉下来的,运行就报错;
我一度怀疑是队友坑我,少上传了一部分代码

试过了各种办法都没有效果
这是我注意到我使用jetty启动

于是切换了下tomcat试试
没有异常了

网上搜了下想找到原因
说法很多
还有些是tomcat报错jetty异常的
大多都没有解决方案

结束这段时间的学习计划之后,我想可以深入研究下
Tomcat和Jetty 

找到解决方案
通过这件事情我对自己的学习能力有了一个认识
在有文档或者解决方案的情况下勉强还可以
只有英文文档或者没有文档的情况下,就不行了

没有研究能力的学习能力是不真实的