Java QueryFilter未按预期工作
我有这段代码,它按预期停止工作。我敢肯定它至少在一年前起作用了,但现在已经不起作用了。我试图检查同一测试用例和同一构建的缺陷是否已经打开 有什么想法吗?RESTAPI最近有变化吗Java QueryFilter未按预期工作,java,rally,Java,Rally,我有这段代码,它按预期停止工作。我敢肯定它至少在一年前起作用了,但现在已经不起作用了。我试图检查同一测试用例和同一构建的缺陷是否已经打开 有什么想法吗?RESTAPI最近有变化吗 private boolean isOldDefect(String refTestCase, String foundIn) throws IOException { boolean oldDefect = false; // Query for Test Case to associate lat
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 ref将不起作用
您需要从缺陷中提取TestCases集合,并在其中循环查找匹配TestCase的ref。如下所示:
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());
}
}
String rallyURL=新字符串(“https://rally1.rallydev.com");
字符串wsapiVersion=新字符串(“v2.0”);
String wsapiURL=新字符串(rallyURL+“/slm/webservice/”+wsapiVersion);
....
//获取测试用例集合
QueryRequest testCasesRequest=新的QueryRequest(defectJsonObject.getAsJsonObject(“测试用例”);
setFetch(新的Fetch(“Name”、“FormattedID”、“ObjectID”);
//查询TestCases集合
JsonArray testcasesofeffect=restApi.query(testCasesRequest.getResults();
字符串myTestCaseRef=新字符串(wsapiURL+“/testcase/12345678910”);
对于(int i=0;iI谈论的是一个单一缺陷,它只能与一个测试用例/我们相关联,或者根本不能与测试用例/用户故事相关联。因此,我的代码是正确的,并且在一段时间前还在工作。测试用例现在是缺陷对象上的只读集合,即使只有一个测试用例与该缺陷相关联。因此,轮询根据答案,选择是检查测试用例关系所必需的。