java - QueryFilter 未按预期工作

标签 java rally

我有这段代码停止按预期工作。我很确定它至少在一年前有效,但现在不行了。我正在尝试检查缺陷是否已经针对相同的测试用例和相同的构建打开。

有什么想法吗?最近rest-api有改变吗?

private boolean isOldDefect(String refTestCase, String foundIn) throws IOException {

    boolean oldDefect = false;
    // Query for Test Case to associate later with new Defect
    QueryRequest defectRequest = new QueryRequest("defect");
    defectRequest.setFetch(new Fetch(RALLY_FormattedID, "Name", "FoundInBuild", RALLY_TestCase, "Owner"));
    defectRequest.setQueryFilter(new QueryFilter("FoundInBuild", "=", foundIn).and(new QueryFilter("TestCase",
            "=", refTestCase)));

    QueryResponse defQueryResponse = restApi.query(defectRequest);
    if (defQueryResponse.wasSuccessful()) {
        if (defQueryResponse.getResults().size() > 1) {
            oldDefect = true;
        }
    }
    return oldDefect;
}

最佳答案

缺陷有一个 TestCases 集合,因此它们上没有单一的 TestCase 属性 - 因此将单个 TestCase 引用作为查询条件进行查询预计不会起作用。

您需要从缺陷中获取 TestCases 集合并循环遍历它以查找匹配 TestCase 的引用。类似于以下内容:

    String rallyURL = new String("https://rally1.rallydev.com");
    String wsapiVersion = new String("v2.0");
    String wsapiURL = new String(rallyURL + "/slm/webservice/" + wsapiVersion);
    ....
    // Fetch Test Cases collection
    QueryRequest testCasesRequest = new QueryRequest(defectJsonObject.getAsJsonObject("TestCases"));
    testCasesRequest.setFetch(new Fetch("Name", "FormattedID", "ObjectID"));

    // Query the TestCases collection
    JsonArray testCasesOfDefect = restApi.query(testCasesRequest).getResults();

    String myTestCaseRef = new String(wsapiURL + "/testcase/12345678910");

    for (int i=0; i<testCasesOfDefect.size(); i++) {
        if (testCasesOfDefect.get(i).getAsJsonObject().get("_ref").getAsString().equals(myTestCaseRef)) {
            System.out.println("Matching TestCase Found:");
            System.out.println(testCasesOfDefect.get(i).getAsJsonObject().get("_ref").getAsString());
            System.out.println("Name: " + testCasesOfDefect.get(i).getAsJsonObject().get("Name") + "; " + testCasesOfDefect.get(i).getAsJsonObject().get("FormattedID").getAsString());

        }
    }

关于java - QueryFilter 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30064514/

相关文章:

java - Selenium (WebDriver) 支持的浏览器

concurrency - 尝试保存第二个任务时来自服务的“并发”错误

java - 获取特定迭代下的所有任务(符合条件)?

java - 有没有办法使用 Rally Rest API 通过标签获取某个项目的所有用户故事?

Rally 2.0 SDK - 查询过滤仅返回 200 个结果

java - 在Java中,是否可以知道一个类是否已经被加载?

Java JSONArray 和动态键

java - 如何从 XML 文件中删除 XML 标签而不对标签名称进行硬编码

Java 构建工具足够灵活,可以进行条件检查

javascript - SDK2 : checkboxes in a RallyGrid column?