测试用例使代码失败?

gin*_*eer 2 java testing unit-testing

我必须维护承包商的代码.它有这个"有趣"的片段:

String webServicesValue = 
  webResponse.substring(webResponse.indexOf("<" + fieldName + ">") + 
                        fieldName.length() + 2, 
                        webResponse.indexOf("</" + fieldName + ">"));
Run Code Online (Sandbox Code Playgroud)

我花了几分钟才明白他想要做什么.

它似乎是一个WTF代码,但我的同事建议,"如果没有破坏,请不要修复它." 我想知道这段代码是否会失败.它似乎工作到目前为止,我真的不能想到一个测试用例失败了.

谢谢,

Ste*_*n C 8

是.如果响应中不存在"<fieldname>",它将抛出异常.具体来说,它将尝试调用webResponse.substring(fieldName.length()+ 1,-1);

"<fieldname />"将导致类似的问题,元素上的任何属性也会如此.

如果你得到"<fieldname> ... <fieldname> ... </ fieldName> ... </ fieldName>",你会得到错误的答案.

编辑:根据后续讨论,我会说应该重写此代码以使用正确的XML解析器...除非您/您的团队可以保证代码永远不必处理有问题的XML.XML只允许通过临时字符串操作处理太多有效(和无效)变体.


Igo*_*ejc 6

如果收到<fieldname/> 会怎么样?