Migrating Solutions for Test Cloud Integration

PDF for offline use
Related Articles:

Let us know how you feel about this

Translation Quality


0/250

last updated: 2016-10

This guide will discuss how to migrate your old UITest solutions to take advantage of the IDE integration provided by Xamarin Studio and Visual Studio.

Overview

⚠️

This guide is deprecated and is no longer maintained.

Starting with Xamarin Studio 5.9 and Xamarin for Visual Studio 3.11, Xamarin enhanced support for Test Cloud in each IDE:

  • Updated Templates – New templates for mobile solutions that include a UITest project.
  • Run Test in Test Cloud – It is now possible to run UITests in Test Cloud using Xamarin Studio or Visual Studio.

This guide will cover how to upgrade older projects that were created before the Test Cloud integration features were added to Xamarin Studio or Xamarin for Visual Studio.

The general process for migrating older UITest projects is as follows:

  1. Upgrade to Xamarin Studio 5.9 or Xamarin for Visual Studio 3.11
  2. Update the UITest Nuget package – IDE integration is provided in version 2.0.0 or higher of the NuGet package.
  3. Point the UITest project to the application projects – In order for the IDE to run the UITests for you, it needs to know about the mobile projects in the solution file. How to do this is covered in the following section.
  4. Remove any explict UITest calls that load the APK / IPA – (optional) Your old tests may have code with the location of the APK or IPA hard coded. Once UITest project points to the test project, the IDE will set the path to the application bundle for you.

Requirements

If you have created your solution using Xamarin Studio 5.9 or Xamarin for Visual Studio 3.11 or higher, your solution automatically has a UITest project that is configured to take advantage of running tests in the IDE.

Pointing the UITest Project to the Mobile Projects

The most significant change is to update the UITest project to point to the mobile projects. This will allow UITest to automatically determine the path to the application bundle for you, eliminating some of the boilerplate initialization code present in UITests.

  1. Open the Unit Tests pad, View > Pads > Unit Tests.
  2. Expand the Tree View and expose the Test Apps node:
  3. Right click on Test Apps, and select Add App Project:
  4. From the dialog that appears, point the UITest project to the mobile applications that Xamarin Studio should run tests for:

To upgrade your UITest project in Visual Studio, select the UITest project and select Project > Add References.... From the Reference Manager dialog that appears, select the mobile projects:

Configuring IApp

The Submitting UITests to Xamarin Test Cloud and Testing on Devices both describe how the IDE will execute tests on the appropriate target. It is no longer necessary to specify the path to the APK or APP/IPA. This means that existing calls to ConfigureApp can be simplified to one of the following:

  • ConfigureApp.Android.StartApp()
  • ConfigureApp.iOS.StartApp()

If you have a solution that targets both Xamarin.iOS and Xamarin.Android, the following helper class can be used to initialize an IApp instance that is appropriate for the platform being tested:

public class AppInitializer
{
    public static IApp StartApp(Platform platform)
    {
        if(platform == Platform.Android)
        {
            return ConfigureApp.Android.StartApp();
        }

        return ConfigureApp.iOS.StartApp();
    }
}

Then, ensure that you are using at least NUnit 2.6.3 (Xamarin.UITest is not compatible with NUnit 3.0), and update each test class to specify the platform as a part of the TestFixture attribute:

[TestFixture(Platform.Android)]
[TestFixture(Platform.iOS)]
public class Tests
{
    IApp app;
    Platform platform;

    public Tests(Platform platform)
    {
        this.platform = platform;
    }

    [SetUp]
    public void BeforeEachTest()
    {
        app = AppInitializer.StartApp(platform);
    }

    [Test]
    public void ClickingButtonTwiceShouldChangeItsLabel()
    {
        // Test code omitted
    }
}

Summary

This guide discussed how to migrate old UITest projects to take advantage of the IDE integration provided by Xamarin Studio 5.9 and newer.

This guide discussed how to migrate old UITest projects to take advantage of the IDE integration provided by Visual Studio 3.11 and newer.

Xamarin Workbook

If it's not already installed, install the Xamarin Workbooks app first. The workbook file should download automatically, but if it doesn't, just click to start the workbook download manually.