3

我使用 Java 的 Rally REST API 解决方案在一个工作区中运行良好。当工作空间不同时,请告知插入测试用例结果。我被困在以下情况下,详细描述如下:*

设置

  • 用户有默认的工作区/项目设置 - XXX/PPP - TC1 存在。
  • 用户有权访问另一个工作区/项目设置 - YYY/QQQ - TC1 存在 -要更新的测试用例。
  • 尝试使用 Rally WS 1.36 和 1.37。
  • 尝试过 Rally 1.0 和 1.0.2-jar [以及适用的相关库]

脚步

我正在尝试在工作区 YYY 中设置测试用例 TC1 的结果,但似乎没有更新并因以下错误而失败。

// Query for Test Case to which we want to add results
QueryRequest testCaseRequest = new QueryRequest("TestCase");
testCaseRequest.setFetch(new Fetch("FormattedID","Name"));
testCaseRequest.setQueryFilter(new QueryFilter("FormattedID", "=", testCaseId));

String workspaceRef = "/workspace/YYY";
String projectRef = "/project/QQQ";

testCaseRequest.setWorkspace(workspaceRef);
testCaseRequest.setProject(projectRef);

QueryResponse testCaseQueryResponse = restApi.query(testCaseRequest);
JsonObject testCaseJsonObject = testCaseQueryResponse.getResults().get(0).getAsJsonObject();
String testCaseRef = testCaseJsonObject.get("_ref").toString();

//Add a Test Case Result                
System.out.println("Creating Test Case Result...");
JsonObject newTestCaseResult = new JsonObject();
newTestCaseResult.addProperty("Verdict", result);
java.util.Date date= new java.util.Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
String timestamp = sdf.format(date);

newTestCaseResult.addProperty("Date", timestamp);
newTestCaseResult.addProperty("Notes", "Automated Test Runs");
newTestCaseResult.addProperty("Build", build);
newTestCaseResult.addProperty("Tester", userRef);
newTestCaseResult.addProperty("TestCase", testCaseRef);

CreateRequest createRequest = new CreateRequest("testcaseresult", newTestCaseResult);
CreateResponse createResponse = restApi.create(createRequest);  

这在最后一行失败并出现此错误:

"{"CreateResult": {"_rallyAPIMajor": "1", "_rallyAPIMinor": "37", "Errors": ["Could not set value for Test Case: Cannot connect object to value, Test Case value is in a different workspace. [object workspace OID=XXX, value workspace OID=YYY"], "Warnings": []}}"
4

1 回答 1

1

如果您没有指定在哪个工作区中创建 TestCaseResult,它将默认为您的配置文件默认值(在这种情况下,它与关联的 TestCase 的工作区不同)。

如果您在创建之前添加以下代码,它应该会成功:

newTestCaseResult.addProperty("Workspace", testCaseJsonObject.get("Workspace").getAsJsonObject().get("_ref").getAsString());

您还需要在原始查询中获取 Workspace:

testCaseRequest.setFetch(new Fetch("FormattedID","Name", "Workspace"));

您会认为 WSAPI 应该能够从链接的 TestCase 推断出正确的工作区,但是这是所有对象类型的创建过程中的常见行为。

于 2012-09-28T04:02:59.557 回答