Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I didn't get a chance to update this blog post yet. Delvis Gomez (A colleague on of mine) has updated the final code sample and OKed distributing it freely. I'll update that blog post for WP8 in the future, but in the meanwhile here's a pretty well documented code snippet on how to automate the WP8 Emulator. </p> <p>Also, make sure to add a reference to the new DLLs needed like Microsoft.SmartDevice.MultiTargeting.Connectivity. </p> <pre><code>using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.IO; using System.Reflection; // Libraries needed to connect to the Windows Phone X Emulator using Microsoft.SmartDevice.Connectivity; using Microsoft.SmartDevice.Connectivity.Interface; using Microsoft.SmartDevice.MultiTargeting.Connectivity; using System.Globalization; using System.Collections.ObjectModel; namespace AutomatedUnitTestDriver { class Program { static void Main(string[] args) { MultiTargetingConnectivity connectivity = new MultiTargetingConnectivity(CultureInfo.CurrentUICulture.LCID); // Get a connectable device for a specific Device ID (from the CoreCon datastore) string deviceId = "5E7661DF-D928-40ff-B747-A4B1957194F9"; ConnectableDevice connectableDevice = connectivity.GetConnectableDevice(deviceId); Console.WriteLine("Found Connectable Device \'" + connectableDevice.Name + "\' for Device id {" + connectableDevice.Id + "}."); // Connect to the Device Console.WriteLine("Connecting to Device..."); IDevice iDevice = connectableDevice.Connect(); Console.WriteLine("Done!"); // Check if the application is already install, if it is remove it (From WMAppManifect.xml) Guid appID = new Guid("{b6635769-b7ac-41a5-915d-5a7b0ae34481}"); if (iDevice.IsApplicationInstalled(appID)) { Console.WriteLine("Uninstalling application..."); iDevice.GetApplication(appID).Uninstall(); Console.WriteLine("Done!"); } Guid productId = appID; Guid instanceId = appID; string applicationGenre = "NormalApp"; string iconPath = @"C:\Share\LatestAPI\TestCode\Automated\AutomatedUnitTests\Bin\Debug\ApplicationIcon.png"; string xapPackage = @"C:\Share\LatestAPI\TestCode\Automated\AutomatedUnitTests\Bin\Debug\AutomatedUnitTests.xap"; // Install the application Console.WriteLine("Installing the application..."); IRemoteApplication remoteApplication = iDevice.InstallApplication(appID, appID, applicationGenre, iconPath, xapPackage); Console.WriteLine("Done!"); // Launch the application Console.WriteLine("Starting the application..."); remoteApplication.Launch(); int startStopWaitTime = 1000; // msec int executionWaitTime = 180000; // msec // Note that IRemoteApplication has a 'IsRunning' method but it is not implemented. // So, for the moment we sleep few msec. Thread.Sleep(startStopWaitTime); Console.WriteLine("Done!"); // Allow application to complete Console.WriteLine("Application is running! Waiting few seconds..."); Thread.Sleep(executionWaitTime); try { IRemoteIsolatedStorageFile remoteIsolatedStorageFile = remoteApplication.GetIsolatedStore(); string sourceDeviceFilePath = (object)Path.DirectorySeparatorChar + "TestResults.trx"; string targetDesktopFilePath = @"C:\Share\LatestAPI\TestCode\Automated\AutomatedUnitTests\Bin\Debug\" + "TestResults.trx"; remoteIsolatedStorageFile.ReceiveFile(sourceDeviceFilePath, targetDesktopFilePath,true); } catch (Exception exception) { Console.WriteLine("Exception \'" + exception.Message + "\' reading file from device."); } // Terminate application Console.WriteLine("Terminating the application..."); remoteApplication.TerminateRunningInstances(); Thread.Sleep(startStopWaitTime); Console.WriteLine("\nDone!"); // Disconnect from the emulator Console.WriteLine("Disconnecting Device..."); iDevice.Disconnect(); Console.WriteLine("\nDone!"); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload