【发布时间】:2016-12-12 21:59:08
【问题描述】:
我已经为以下功能编写了 Junit 测试用例。当检查 JACOCO 测试覆盖率时。它显示只有 try 块被测试用例覆盖。我是编写测试用例的新手。如何在测试用例中覆盖异常和 catch 块
这是一个方法
public static List<Student> readCsvFile(String fileName)
{
BufferedReader fileReader = null;
//logic to read file
}
catch (Exception e)
{
System.out.println("Error in CsvFileReader !!!");
e.printStackTrace();
} finally
{
try
{
fileReader.close();
} catch (IOException e)
{
System.out.println("Error while closing fileReader !!!");
e.printStackTrace();
}
}
return students;
}
和测试方法
@Test
public void ReadCsvFileTest()
{
String fileName = "test.csv";
List<Student> result = new ArrayList<Student>();
result = CsvFileReader.readCsvFile(fileName);
Student student1 = null;
Iterator<Student> it = result.iterator();
while (it.hasNext())
{
Student s = it.next();
if ("471908US".equals(s.getId()))
{
student1 = s;
break;
}
}
assertTrue(student1 != null);
}
【问题讨论】:
-
只有在抛出异常时才会覆盖异常块。
-
CsvFileReader.readCsvFile("notexisting.csv")应该输入捕获 -
Compass 建议您在测试执行期间必须在 try 块内抛出异常。通常我会使用像 Mockito 这样的模拟框架来实现这一点。但也许在你的情况下,它足以传递一个无效的文件名。
标签: java spring unit-testing junit junit4