Inside Out

Windows Phone: Store unit test results to isolated storage

<p>This is a tiny experiment to automate parts of unit testing in Windows Phone 7.5 (Mango, here onwards). We will extend silverlight unit testing framework to store the results of a Mango unit test in MSTest test results format in application Isolated Storage and finally fetch them onto desktop.</p>

Assuming you've Mango tools setup already. Get Mango compatible SL unit testing framework bits from Jeff's [blog](http://www.jeff.wilcox.name/2011/06/updated-ut-mango-bits/).

Sample project is available [here](https://github.com/codito/wpsamples/tree/master/SLUnitTest.IsoStore).

Setting it up.. ---------------

- Add [IsolatedStorageReportingProvider.cs](https://github.com/codito/wpsamples/blob/master/SLUnitTest.IsoStore/PhoneApp.Test/IsolatedStorageReportingProvider.cs) to your test project -

Wire it up with the UnitTestHarness in your application entry page (see my [MainPage.xaml.cs](https://github.com/codito/wpsamples/blob/master/SLUnitTest.IsoStore/PhoneApp.Test/MainPage.xaml.cs)). By the way, Silverlight Unit Test framework [code](http://silverlight.codeplex.com/SourceControl/changeset/view/69081#976050) is available on codeplex. Feel free to explore :)
</p>
<div class="CodeRay">

</p>
<div class="code">

</p>
    // Set custom log writerIsolatedStorageReportingProvider isoLog = new IsolatedStorageReportingProvider(((MobileTestPage)testPage).UnitTestHarness.Settings.TestService);((MobileTestPage)testPage).UnitTestHarness.Settings.TestService.RegisterService(Microsoft.Silverlight.Testing.Service.TestServiceFeature.TestReporting, isoLog);// Uncomment this to automatically terminate the test application after test is complete!//isoLog.LogPublished += new EventHandler(this.OnTestHarnessCompleted);(Application.Current.RootVisual as PhoneApplicationFrame).Content = testPage;

</div>

</p>
<p>

</div>

</p>
<p>
  • Fire up [ISETool.exe](http://msdn.microsoft.com/en-us/library/hh286408.aspx) to get the results onto desktop

    [![Isetool](http://arun.files.wordpress.com/2011/08/isetool-scaled1000.png?w=300)](http://arun.files.wordpress.com/2011/08/isetool-scaled1000.png)

     
</p>
<p>

Additional thoughts -------------------

- With some ISETool.exe and MSBuild fu, it should be possible to get continuous integration magic. In this context, [Richard Szalay](http://blog.richardszalay.com/2011/08/11/wp7-tdd/)'s [WP7CI](http://wp7ci.codeplex.com/) project looks promising. I haven't tried it, may be it is possible to reuse the same set of scripts. - Publishing these [results to TFS servers](http://msdn.microsoft.com/en-us/library/ms182488.aspx) may be possible too. Looks like *testresults.trx* requires some additional files to work correctly in VS (could be because of vsmdi test metadata?)