Как изменить статус автоматизации тестового примера в MTM с помощью С#?

Мы пытаемся интегрировать сценарии UFT с MTM. Пока нам это удалось. Мы создали множество приложений, использующих TFS API, и нам это удобно.

Вопрос: Как мы можем изменить Статус автоматизации тестового примера?

Что мы сделали:

TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("Your URL"));
ITestManagementTeamProject project = tfs.GetService<ITestManagementService>().GetTeamProject("Ypur Project Name");
ITestPlan testPlan = project.TestPlans.find("Your test plan ID");
ItestCaseCollection testcasecollection = testPlan.RootSuite.AllTestCases;

foreach (ITestCase testcase in testcasecollection)
{
   if (testcase.Id=="YourTestcaseID")
   {
       //Now here we need tochange status of test case from Not Automated to automated 
       //we can change area path, title ,priority etc using TFS provided methods, but we cant change Automation status from Not Automated to others
       testcase.status="Active"; // to change status of test case from closed to active.

      // What is the method to change Automation status for a test case?? we only find method to get the automation status by using below method which is read only and returns value.
      string str=testcase.IsAutomated(); // this returns but not sets
   }
}

Короче говоря, есть ли у нас какой-либо способ изменить статус автоматизации тестового примера в MTM/TFS с помощью C#, как мы меняем состояние и другие?


person Nakul    schedule 26.11.2015    source источник
comment
Вы сохраняете testcase?   -  person ds19    schedule 26.11.2015
comment
какую версию tfs вы используете?   -  person PatrickLu-MSFT    schedule 27.11.2015


Ответы (1)


Используйте следующий метод:

    /// <summary>
    /// Associates an automation to the test case.
    /// </summary>
    /// <param name="testCase">The test case artifact to which to associate automation</param>
    /// <param name="automationTestName">The automation test name. It should be fully
    /// qualified of format "Namespace.ClassName.TestMethodName.</param>
    /// <param name="automationTestType">The automation test type like "CodedUITest".</param>
    /// <param name="automationStorageName">The assembly name containing the above
    /// test method without path like MyTestProject.dll.</param>
    private static ITestCase AssociateAutomation(ITestCase testCase,
        string automationTestName, string automationTestType, string automationStorageName)
    {
        // Build automation guid
        SHA1CryptoServiceProvider crypto = new SHA1CryptoServiceProvider();
        byte[] bytes = new byte[16];
        Array.Copy(crypto.ComputeHash(Encoding.Unicode.GetBytes(automationTestName)), bytes, bytes.Length);
        Guid automationGuid = new Guid(bytes);

        // Create the associated automation.
        testCase.Implementation = testCase.Project.CreateTmiTestImplementation(
                automationTestName, automationTestType,
                automationStorageName, automationGuid);

        // Save the test. If you are doing this for lots of test, you can consider
        // bulk saving too (outside of this method) for performance reason.
        return testCase;
    }
person Alex P    schedule 26.11.2015