如何"单元测试"在Android上进行json解析(JSONObject ==" null")?

时间:2016-02-16 21:28:06

标签: android json unit-testing

我有一些问题。我创建了JSONParser并需要对其进行单元测试。但是,如果我尝试使用有效JSON的副本传递String对象,则每次JSONObject(我的Parser的一部分)都具有null值。

这里的例子。

JSON我分配给字符串:

public class JSONParserTest {
    private JSONParser parser;
    private Translations translations;
    private String nounsAndAdjectivesJson = "{\"head\":{},\"def\":[{\"text\":\"house\",\"pos\":\"noun\",\"ts\":\"haʊs\",\"tr\":[{\"text\":\"дом\",\"pos\":\"существительное\",\"gen\":\"м\",\"syn\":[{\"text\":\"домик\",\"pos\":\"существительное\",\"gen\":\"м\"},{\"text\":\"хаус\",\"pos\":\"существительное\",\"gen\":\"м\"}],\"mean\":[{\"text\":\"home\"},{\"text\":\"cottage\"}],\"ex\":[{\"text\":\"white house\",\"tr\":[{\"text\":\"белый дом\"}]},{\"text\":\"wooden house\",\"tr\":[{\"text\":\"деревянный домик\"}]}]},{\"text\":\"помещение\",\"pos\":\"существительное\",\"gen\":\"ср\",\"syn\":[{\"text\":\"здание\",\"pos\":\"существительное\",\"gen\":\"ср\"}],\"mean\":[{\"text\":\"room\"},{\"text\":\"building\"}],\"ex\":[{\"text\":\"house of parliament\",\"tr\":[{\"text\":\"здание парламента\"}]}]},{\"text\":\"гостиница\",\"pos\":\"существительное\",\"gen\":\"ж\",\"mean\":[{\"text\":\"hotel\"}]},{\"text\":\"семья\",\"pos\":\"существительное\",\"gen\":\"ж\",\"mean\":[{\"text\":\"family\"}]},{\"text\":\"хозяйство\",\"pos\":\"существительное\",\"gen\":\"ср\",\"mean\":[{\"text\":\"farm\"}]},{\"text\":\"театр\",\"pos\":\"существительное\",\"gen\":\"м\",\"mean\":[{\"text\":\"theatre\"}]},{\"text\":\"палата\",\"pos\":\"существительное\",\"gen\":\"ж\",\"mean\":[{\"text\":\"chamber\"}],\"ex\":[{\"text\":\"house of representatives\",\"tr\":[{\"text\":\"палата представителей\"}]}]},{\"text\":\"жилье\",\"pos\":\"существительное\",\"gen\":\"ср\",\"syn\":[{\"text\":\"жилище\",\"pos\":\"существительное\",\"gen\":\"ср\"}],\"mean\":[{\"text\":\"housing\"}],\"ex\":[{\"text\":\"safe houses\",\"tr\":[{\"text\":\"безопасное жилье\"}]},{\"text\":\"traditional house\",\"tr\":[{\"text\":\"традиционное жилище\"}]}]},{\"text\":\"род\",\"pos\":\"существительное\",\"gen\":\"м\",\"mean\":[{\"text\":\"kind\"}]},{\"text\":\"рубка\",\"pos\":\"существительное\",\"gen\":\"ж\",\"mean\":[{\"text\":\"cutting\"}]},{\"text\":\"династия\",\"pos\":\"существительное\",\"gen\":\"ж\",\"mean\":[{\"text\":\"dynasty\"}]},{\"text\":\"публика\",\"pos\":\"существительное\",\"gen\":\"ж\",\"mean\":[{\"text\":\"audience\"}]},{\"text\":\"биржа\",\"pos\":\"существительное\",\"gen\":\"ж\",\"mean\":[{\"text\":\"market\"}]}]},{\"text\":\"house\",\"pos\":\"adjective\",\"ts\":\"haʊs\",\"tr\":[{\"text\":\"домашний\",\"pos\":\"прилагательное\",\"mean\":[{\"text\":\"home\"}],\"ex\":[{\"text\":\"house arrest\",\"tr\":[{\"text\":\"домашний арест\"}]}]},{\"text\":\"домовый\",\"pos\":\"прилагательное\",\"ex\":[{\"text\":\"house mouse\",\"tr\":[{\"text\":\"домовая мышь\"}]}]},{\"text\":\"комнатный\",\"pos\":\"прилагательное\",\"mean\":[{\"text\":\"room\"}]}]},{\"text\":\"house\",\"pos\":\"verb\",\"ts\":\"haʊs\",\"tr\":[{\"text\":\"расквартировывать\",\"pos\":\"глагол\",\"asp\":\"несов\"},{\"text\":\"размещаться\",\"pos\":\"глагол\",\"asp\":\"несов\",\"mean\":[{\"text\":\"host\"}]},{\"text\":\"жить\",\"pos\":\"глагол\",\"asp\":\"несов\",\"mean\":[{\"text\":\"live\"}]},{\"text\":\"вмещать\",\"pos\":\"глагол\",\"asp\":\"несов\",\"mean\":[{\"text\":\"accommodate\"}]},{\"text\":\"поселить\",\"pos\":\"глагол\",\"asp\":\"сов\",\"syn\":[{\"text\":\"приютить\",\"pos\":\"глагол\",\"asp\":\"сов\"}],\"mean\":[{\"text\":\"settle\"},{\"text\":\"shelter\"}]},{\"text\":\"помещать\",\"pos\":\"глагол\",\"asp\":\"несов\",\"mean\":[{\"text\":\"place\"}]}]}]}";
    private String verbsJson = "{\"head\":{},\"def\":[{\"text\":\"peek\",\"pos\":\"verb\",\"ts\":\"piːk\",\"tr\":[{\"text\":\"взглянуть\",\"pos\":\"глагол\",\"asp\":\"сов\",\"syn\":[{\"text\":\"заглянуть\",\"pos\":\"глагол\",\"asp\":\"сов\"},{\"text\":\"заглядывать\",\"pos\":\"глагол\",\"asp\":\"несов\"}],\"mean\":[{\"text\":\"glance\"},{\"text\":\"look\"}],\"ex\":[{\"text\":\"peek inside\",\"tr\":[{\"text\":\"заглянуть внутрь\"}]}]},{\"text\":\"выглянуть\",\"pos\":\"глагол\",\"asp\":\"сов\",\"syn\":[{\"text\":\"выглядывать\",\"pos\":\"глагол\",\"asp\":\"несов\"},{\"text\":\"подглядывать\",\"pos\":\"глагол\",\"asp\":\"несов\"}],\"mean\":[{\"text\":\"look\"},{\"text\":\"peep\"}]}]},{\"text\":\"peek\",\"pos\":\"noun\",\"ts\":\"piːk\",\"tr\":[{\"text\":\"быстрый взгляд\",\"pos\":\"существительное\",\"mean\":[{\"text\":\"quick look\"}]},{\"text\":\"взгляд украдкой\",\"pos\":\"существительное\"},{\"text\":\"пик\",\"pos\":\"существительное\",\"gen\":\"м\",\"mean\":[{\"text\":\"peak\"}]}]}]}";

    @Before
    public void setUp() throws Exception {
        translations = new Translations();
    }

    @Test
    public void testVerbsOnlyParsing() throws JSONException{
        JSONObject jsonObject = new JSONObject(verbsJson);
        parser = new JSONParser(jsonObject);
        translations = parser.getTranslations();
        Assert.assertNotNull(translations.getVerbs());
    }
}

我对JSONParser的单元测试

@Test
public void testVerbsOnlyParsing() throws JSONException, IOException {
    parser = new JSONParser(verbsJson);
    translations = parser.getTranslations();
    Assert.assertNotNull(translations.getVerbs());
}

JSONParser的一部分,它在初始化JSONObject期间遇到从String获取数据的问题:

public class JSONParser {
    private Translations translations;
    public JSONParser(String response) throws JSONException {
        translations = new Translations();
        parseJSON(response);
    }

    private void parseJSON(String response) throws JSONException {
        JSONObject object = new JSONObject(response); //object == "null"
        JSONArray arrayOfDefinitions = getArray(object, DEFINITION);
        parseArray(arrayOfDefinitions, TRANSLATIONS);
    }

我真的不知道导致问题的原因(JSONObject对象==" null"),你能帮帮我吗?

0 个答案:

没有答案