DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try
{
builder = factory.newDocumentBuilder();
}
catch (ParserConfigurationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
doc = builder.parse(entity.getContent());
}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SAXException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
我正在使用dom将xml文件解析为string。如何编写单元测试以捕获100%的线路覆盖率。我正在使用每个模拟器。
答案 0 :(得分:1)
你没有,因为它毫无意义。
如果您的经理不理解,那么以下是测试方法:
DocumentBuilderFactory
描述了用于配置解析器的机制。通过更改系统属性,您可以将自己的(模拟)类用作工厂。它可以抛出异常。SaxException
。创建一些格式错误的XML并将其传递给您的代码。IllegalStateException
时,会抛出null
。所以通过null
我应该纠正自己:这不是没有意义的。如果您成功获得100%的覆盖率,您将发现应该修复您的异常处理。如上所述,您的代码会在异常后继续运行(直到它获得NPE),这是不应该的。
答案 1 :(得分:0)
IllegalStateException
将从空URI中抛出。
SAXException
将被抛出。
ParserConfigurationException
才会被抛出。
但是,这些异常并不需要进行测试,因为您所做的只是打印堆栈跟踪。并不总是需要获得100%的代码覆盖率,尤其是在这样的情况下,您只需要测试Java库的已知功能。
如果异常中有逻辑,则可以通过将逻辑拉出到方法中来测试逻辑。
e.g。
public void printStackTrace(Exception e){
e.printStackTrace();
}
这是一种易于测试的方法,不需要您在代码的不同部分找到触发异常的方法。