如何在switch语句中抛出parseException?

时间:2016-06-30 13:50:50

标签: java unit-testing

要增加项目代码覆盖率,我需要在此方法中到达分支 ParseException

public  String SearchEngine(String removecommand)
{//INCOMING-SEARCH¿Email¿@gmail.com
    JSONArray databaseupdated = read(pathdatabase);
    ArrayList<String> matchlist = new ArrayList<String>();
    JSONObject mainobj = new JSONObject();
    JSONArray userinfo = new JSONArray();
    JSONObject obj = new JSONObject();
    for(int i = 0; i<databaseupdated.size(); i++)
    {
        String option = "";
        String value = "";
        try {
            JSONObject json = (JSONObject) new JSONParser().parse(removecommand);
            option = (String) json.get("option");
            value = (String) json.get("value");
            mainobj= (JSONObject) new JSONParser().parse(databaseupdated.get(i).toString());
            userinfo =(JSONArray) new JSONParser().parse(mainobj.get(mainobj.keySet().toString().substring(1,mainobj.keySet().toString().length()-1)).toString());
            obj = (JSONObject) new JSONParser().parse(userinfo.get(0).toString());  
        } //EDIT, there is a lot of code not explained, but here is the parse EXCEPTION
          catch (ParseException e) {
            return "false";
        }
        if(SearchEngineTRUEFALSE1(mainobj.keySet().toString().substring(1,mainobj.keySet().toString().length()-1),option,value))
        {
            matchlist.add(obj.get("Email").toString());
        }
    }
    return matchlist.toString();
}
本能是我们必须放一个非法&#34;的字符串,因为它实际上不是一个字符串而无法解析,但你怎么放这样的东西没有导致编译错误(比如使用int来导致faulse解析)。任何想法如何测试这个捕获&#34;分支&#34;?

编辑:这是上面使用解析异常

调用的方法
{{1}}

3 个答案:

答案 0 :(得分:1)

试试这个:

throw new ParseException("Parse exception description you want");

答案 1 :(得分:0)

你可以抛出异常,就像Michaël告诉的那样,如果你使用Junit进行测试,你可以使用预期的注释来做这样的事情来抓住它

@Test(expected= ParseException)
public void testFilterMessage() {
    filterMessage(illformedString1, illformedString2);
}

答案 2 :(得分:0)

鉴于您更新的问题:

您希望使用模拟框架。

基本上,您必须启用正在测试的类,以便为其提供模拟 srvmt对象。并且您将该模拟配置为在调用其拥有的方法时简单地抛出该异常。好吧,你的一个测试用例配置mock来抛出异常;其他测试用例会将mock配置为返回其他结果。

换句话说:搜索“依赖注入”和“嘲弄”等术语;学习和申请。