如何在Rally Rest toolkit for Java中获取整个TestFolders树?

如何在Rally Rest toolkit for Java中获取整个TestFolders树?,java,tree,rally,Java,Tree,Rally,在我的Rally项目中,我有这样的testfolder结构: TestFolderGrandGrandParent1 TestFolderGrandParent1 TestFolderParent1 testcase1, testcase2..... testcase5 TestFolderChild1 te

在我的Rally项目中,我有这样的testfolder结构:

TestFolderGrandGrandParent1 TestFolderGrandParent1 TestFolderParent1 testcase1, testcase2..... testcase5 TestFolderChild1 testcase10, testcase11..... testcase15 TestFolderChild2 testcase20, testcase21..... testcase25 TestFolderChild3 TestFolderGrandChild1 testcase20, testcase21..... testcase25 TestFolder外祖父母1 TestFolderGrandrent1 TestFolderParent1 测试用例1,测试用例2。。。。。测试用例5 TestFolderChild1 测试用例10,测试用例11。。。。。测试用例15 TestFolderChild2 测试用例20,测试用例21。。。。。测试用例25 TestFolderChild3 TestFolder1 测试用例20,测试用例21。。。。。测试用例25 如果我只有两级关系,比如父级、子级,我已经找到了获取测试用例的方法。
目前,我正在寻找一种方法,通过了解第一个文件夹来获取整个树,从而获得所有底层文件夹,以遍历每个文件夹

不幸的是,没有有效的方法来做到这一点。您必须查询顶级测试文件夹,然后递归遍历树,在每个级别获取子级。

在项目中搜索测试文件夹。它将列出该项目中的所有测试文件夹

 RallyRestApi restApi = new RallyRestApi(new URI("https://rally.rallydev.com/"), "_apogjlfdkjglfjlksr23rfdlj");
    String wsapiVersion = "v2.0";
    String workspaceRef = "/workspace/01245";
    String projectRef = "/project/6757552";
    if(restApi!=null){
        restApi.setWsapiVersion(wsapiVersion);
        QueryRequest queryRequest = new QueryRequest("TestFolders");
        queryRequest.setFetch(new Fetch(new String[] { "Name","FormattedID","TestFolder"}));

        queryRequest.setWorkspace(workspaceRef);
        queryRequest.setProject(projectRef);
        queryRequest.setScopedDown(true);
        queryRequest.setLimit(Integer.MAX_VALUE);
        queryRequest.setPageSize(Integer.MAX_VALUE);

        QueryResponse queryResponse = null;
        JsonArray jsonarr = new JsonArray();
        queryResponse = restApi.query(queryRequest);
        int responseTotalResultsCount = queryResponse.getTotalResultCount();
        jsonarr.addAll(queryResponse.getResults());
        int jsonArrSize = jsonarr.size();

        for (int i=0; i<queryResponse.getResults().size();i++){
            JsonObject testCaseJsonObject = queryResponse.getResults().get(i).getAsJsonObject();
            System.out.println(testCaseJsonObject.getAsJsonObject().get("FormattedID")+": "+testCaseJsonObject.getAsJsonObject().get("Name"));
        }
    }
RallyRestApi restApi=new-RallyRestApi(新URI(“https://rally.rallydev.com/”)”;
字符串wsapiVersion=“v2.0”;
字符串workspaceRef=“/workspace/01245”;
字符串projectRef=“/project/6757552”;
如果(restApi!=null){
restApi.setWsapiVersion(wsapiVersion);
QueryRequest QueryRequest=新的QueryRequest(“TestFolders”);
setFetch(新的Fetch(新字符串[]{“Name”,“FormattedID”,“TestFolder”}));
queryRequest.setWorkspace(workspaceRef);
queryRequest.setProject(projectRef);
queryRequest.setScopedDown(真);
queryRequest.setLimit(整数最大值);
queryRequest.setPageSize(整数.MAX_值);
QueryResponse QueryResponse=null;
JsonArray jsonarr=新的JsonArray();
queryResponse=restApi.query(queryRequest);
int responseTotalResultCount=queryResponse.getTotalResultCount();
addAll(queryResponse.getResults());
int jsonArrSize=jsonarr.size();

对于(int i=0;i,考虑到如果没有重复的文件夹,那么您需要做的是设置基本文件夹

例如:

new QueryFilter("Name","=","base folder name").and(new QueryFilter("Parent","=","null"))

然后,您可以获取父级的引用,并获取结果中的所有子级,并通过引用上一个父级的每个输出对其进行迭代,直到得到结果为[],这表明您位于基本文件夹中,然后从中提取测试用例。

谢谢您的回答。