如何使用Rally的JAVA API将标签添加到Rally中的TestCase?

我一直在努力为Rally中的测试用例添加标签。 标签已存在于Tags集合中。 但我无法将其添加到测试用例中。 有些人可以举例说明如何做到这一点吗?

非常感谢。

以下是如何执行此操作的示例 – 该示例显示了向现有测试用例添加标记,以及创建新测试用例和向新标记添加标记。

public class RestExample_AddTagsToTestCase { public static void main(String[] args) throws URISyntaxException, IOException { // Create and configure a new instance of RallyRestApi // Connection parameters String rallyURL = "https://rally1.rallydev.com"; String wsapiVersion = "1.34"; String applicationName = "RestExample_AddTagsToTestCase"; // Credentials String userName = "user@company.com"; String userPassword = "password"; RallyRestApi restApi = new RallyRestApi( new URI(rallyURL), userName, userPassword); restApi.setWsapiVersion(wsapiVersion); restApi.setApplicationName(applicationName); // User settings String testerUserName = "tester@company.com"; // Workspace and Project Settings String myWorkspace = "My Workspace"; String myProject = "My Project"; // FormattedID of Existing Test Case to Query String existTestCaseFormattedID = "TC172"; // Tag Names of Interest String tagNameAlpine = "Alpine"; String tagNameMontane = "Montane"; //Read User QueryRequest userRequest = new QueryRequest("User"); userRequest.setFetch(new Fetch("UserName", "Subscription", "DisplayName")); userRequest.setQueryFilter(new QueryFilter("UserName", "=", testerUserName)); QueryResponse userQueryResponse = restApi.query(userRequest); JsonArray userQueryResults = userQueryResponse.getResults(); JsonElement userQueryElement = userQueryResults.get(0); JsonObject userQueryObject = userQueryElement.getAsJsonObject(); String userRef = userQueryObject.get("_ref").toString(); // Get reference to Workspace of interest QueryRequest workspaceRequest = new QueryRequest("Workspace"); workspaceRequest.setFetch(new Fetch("Name", "Owner", "Projects")); workspaceRequest.setQueryFilter(new QueryFilter("Name", "=", myWorkspace)); QueryResponse workspaceQueryResponse = restApi.query(workspaceRequest); String workspaceRef = workspaceQueryResponse.getResults().get(0).getAsJsonObject().get("_ref").toString(); // Get reference to Project of interest QueryRequest projectRequest = new QueryRequest("Project"); projectRequest.setFetch(new Fetch("Name", "Owner", "Projects")); projectRequest.setQueryFilter(new QueryFilter("Name", "=", myProject)); QueryResponse projectQueryResponse = restApi.query(projectRequest); String projectRef = projectQueryResponse.getResults().get(0).getAsJsonObject().get("_ref").toString(); // Get reference to Tag(s) of interest QueryRequest tagRequest = new QueryRequest("Tag"); tagRequest.setFetch(new Fetch("Name")); // Look for Tag named "Alpine" tagRequest.setQueryFilter(new QueryFilter("Name", "=", tagNameAlpine)); QueryResponse tagQueryResponse = restApi.query(tagRequest); JsonObject tagAlpineJsonObject = tagQueryResponse.getResults().get(0).getAsJsonObject(); JsonElement tagAlpine = tagQueryResponse.getResults().get(0).getAsJsonObject(); String tagAlpineRef = tagAlpineJsonObject.get("_ref").toString(); // Look for a second Tag named "Montane" tagRequest.setQueryFilter(new QueryFilter("Name", "=", tagNameMontane)); tagQueryResponse = restApi.query(tagRequest); JsonObject tagMontaneJsonObject = tagQueryResponse.getResults().get(0).getAsJsonObject(); JsonElement tagMontane = tagQueryResponse.getResults().get(0).getAsJsonObject(); String tagMontaneRef = tagMontaneJsonObject.get("_ref").toString(); // Query for existing Test Case QueryRequest existTestCaseRequest = new QueryRequest("TestCase"); existTestCaseRequest.setFetch(new Fetch("FormattedID","Name","Tags")); existTestCaseRequest.setQueryFilter(new QueryFilter("FormattedID", "=", existTestCaseFormattedID)); QueryResponse testCaseQueryResponse = restApi.query(existTestCaseRequest); JsonObject existTestCaseJsonObject = testCaseQueryResponse.getResults().get(0).getAsJsonObject(); String existTestCaseRef = testCaseQueryResponse.getResults().get(0).getAsJsonObject().get("_ref").toString(); JsonArray existTagsJsonArray = (JsonArray) testCaseQueryResponse.getResults().get(0).getAsJsonObject().get("Tags"); // Update Tags on Existing Test Case try { // Add additional Tag to Existing Test Case's Tag Collection existTagsJsonArray.add(tagMontane); //Add Tag System.out.println("\nUpdating Existing Test Case's tags..."); JsonObject updateExistTestCase = new JsonObject(); updateExistTestCase.add("Tags", existTagsJsonArray); UpdateRequest updateExistTestCaseRequest = new UpdateRequest(existTestCaseRef, updateExistTestCase); UpdateResponse updateExistTestCaseResponse = restApi.update(updateExistTestCaseRequest); if (updateExistTestCaseResponse.wasSuccessful()) { System.out.println("Updated Test Case with new Tags"); } else { String[] updateExistTestCaseErrors; updateExistTestCaseErrors = updateExistTestCaseResponse.getErrors(); System.out.println("Error occurred updating Test Case: "); for (int i=0; i