3

Javaを使用したRallyRESTAPIのソリューションは、1つのワークスペース内で正常に機能しています。ワークスペースが異なる場合は、テストケースの結果を挿入することをお勧めします。以下で詳細に説明するように、私は次の状況で立ち往生しています:*

設定

  • ユーザーにはデフォルトのワークスペース/プロジェクト設定があります-XXX/PPP-TC1が存在します。
  • ユーザーは別のワークスペース/プロジェクト設定にアクセスできます-YYY/QQQ-TC1が存在します-更新するテストケース。
  • RallyWS1.36および1.37を使用してみました。
  • Rally1.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());

また、元のクエリでワークスペースをフェッチする必要があります。

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

WSAPIは、リンクされたTestCaseから正しいワークスペースを推測できるはずですが、これはすべてのオブジェクトタイプの作成全体で一般的な動作です。

于 2012-09-28T04:02:59.557 に答える