Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该为下面的函数编写哪些单元测试用例?另外,如何在函数中提供示例JSONobject作为参数?_Java_Android_Unit Testing_Junit_Android Testing - Fatal编程技术网

Java 我应该为下面的函数编写哪些单元测试用例?另外,如何在函数中提供示例JSONobject作为参数?

Java 我应该为下面的函数编写哪些单元测试用例?另外,如何在函数中提供示例JSONobject作为参数?,java,android,unit-testing,junit,android-testing,Java,Android,Unit Testing,Junit,Android Testing,下面是我想进行单元测试的函数。我是在android中写这篇文章的,因为JSONObject是一个android类,所以我不能初始化,我只能模拟,但我还想测试有样本JSON的情况,它提供了正确的结果或异常(如果样本JSON不正确) public List parseAndReturnGithubRepositorySearchResponse(JSONObject响应)引发异常{ List githubRepositorySchemas=new ArrayList(); 如果(响应有(“项目”))

下面是我想进行单元测试的函数。我是在android中写这篇文章的,因为JSONObject是一个android类,所以我不能初始化,我只能模拟,但我还想测试有样本JSON的情况,它提供了正确的结果或异常(如果样本JSON不正确)

public List parseAndReturnGithubRepositorySearchResponse(JSONObject响应)引发异常{
List githubRepositorySchemas=new ArrayList();
如果(响应有(“项目”)){
JSONArray items=response.getJSONArray(“items”);
对于(int i=0;i
您的测试用例可以是: 1.使用单个项目JSON进行测试,断言该对象具有相同的属性 2.多项目JSON,检查对象的属性 3.在没有“items”的情况下进行测试,并查看您的方法是否引发异常 4.玩弄对象的各个关键点。我注意到您没有对对象使用类似的has“key”检查。这是单元测试实际上可以暴露代码中错误的一个领域

编辑:您可以通过构造函数构建JSONObject并向其添加对象,就像映射一样。查一查

我不建议编写此代码。很多解析器(Gson、Moshi、Jackson)都是免费的

public List<GithubRepositorySchema> parseAndReturnGithubRepositorySearchResponse(JSONObject response) throws Exception {
        List<GithubRepositorySchema> githubRepositorySchemas = new ArrayList<>();
        if (response.has("items")) {
            JSONArray items = response.getJSONArray("items");
            for (int i = 0; i < items.length(); i++) {
                JSONObject repoObj = items.getJSONObject(i);
                githubRepositorySchemas.add(new GithubRepositorySchema(
                        repoObj.getString("name"),
                        repoObj.getBoolean("private"),
                        repoObj.getString("description"),
                        repoObj.getString("language"),
                        repoObj.getInt("forks_count"),
                        repoObj.getInt("open_issues"),
                        repoObj.getInt("watchers")
                ));
            }
        } else {
            throw new JSONException("Incorrect Json");
        }

        return githubRepositorySchemas;
    }