异常提示:
出现场景:
单元测试的时候出现异常。前一天测试都没问题,第二天写了一个新方法,调用前一天的方法。测试两个方法的时候出现该异常。
相关代码:
/**
* 获取本周的开始和和结束时间(当天)
* @return
*/
@Test
public Map<String,String> getThisWeek(){
//获取当前日期,并设定格式
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
//今天
String startDate = simpleDateFormat.format(date);
dateMap.put("startDate", startDate);
Calendar calendar = Calendar.getInstance();
//获取今天为一周内的第几天,因为从周日开始,所以减1
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
//获取今天为本月的第几天
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
// 将DAY_OF_MONTH设置为星期一,并获取星期一的日期
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth - dayOfWeek + 1);
String endDate = simpleDateFormat.format(calendar.getTime());
dateMap.put("endDate", endDate);
return dateMap;
}
分析原因:
- 网上说是缺少jar包
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
</dependency>
导入依赖之后还是报错。
2. 想起前一天测试方法的时候,返回值为void。改为void后执行@Test无异常。
解决方法:
网上没有找到对有返回值的方法进行测试的JUnit方法。所以想了如下的方法进行测试。若是谁知道怎么测试含返回值的方法,也可以在评论里告诉我。
@Test
public void test(){
//获取当前周
Map<String,String> firstWeekMap = getThisWeek(); //调用测试方法
String startDate = firstWeekMap.get("startDate");
String endDate = firstWeekMap.get("endDate");
System.out.println(startDate);
System.out.println(endDate);
}
补充
测试A方法的时候。如果某个含返回值的方法B也加了@Test注解,则会出现以下的错误(与前面出现的不同)。解决方法就是去掉B方法的@Test注解,或者是返回值改为void。