3 May 2010
In April we released a new version of the Silverlight Toolkit for targeting Microsoft Silverlight 4. This release contains a new version of the Silverlight Unit Test Framework. Key improvements come in user interface, Silverlight 4 support, and performance.
The user interface no longer uses the antiquated HTML DOM bridge for displaying results, but now is a data bound, rich Silverlight application itself.
Rich results information is available, and a tree view control allows you to select results to be included in a test report that can be copied to the clipboard. Failures are automatically selected.
The results pane includes information about the tests that ran, as well as detailed information for failures.
Descriptive text helps identify negative tests, known test issues and bugs, and other important metadata that was not always exposed in the previous test framework.
The startup experience now allows you to enter a tag expression to select which tests to run, or not to run. You can add the Tag(“”) attribute to any test methods or classes to define your own tags. Also, the full and short names of tests and classes implicitly become test tags, as well as priorities.
This means that you can define tags such as:
|!MyTest1||Run all tests except for the method named MyTest1|
|MyTest1+MyTest2||Run the MyTest1 and MyTest2 test methods|
The framework now supports running out-of-browser. Paired with the new Silverlight 4 Tools for Visual Studio 2010, you can press F5 to run a test project you have marked as an out-of-browser.
This also opens up an opportunity to do testing of elevated apps that make use of AutomationFactory and other advanced features on Windows.
The test framework removed dependencies on System.Windows.Browser (from the platform) and System.Xml.Linq (XLinq, from the SDK).
This version also contains the full source to the phone testing interface, which is significantly different in visual design and experience to coincide with the Windows Phone device size.
However, the story for phone testing is still developing: in the meantime binaries designed for phone use can be found at http://jeffatmix.com/
Since the new rich user interface contains a number of controls, the traditional design-time integration system conflicts and presents some issues.
As a result, we had to move the binaries from the Bin directory of the toolkit installation folder into a new Testing directory.
So the two test framework assemblies (Microsoft.Silverlight.Testing and Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight) have moved.
This location change could cause existing applications that reference the test assemblies to fail to compile due to the "missing" references.
If that happens, please delete the two broken references and create references to these assemblies in their new location. Everything else should continue to work as expected.
In alignment with the test project changes in Visual Studio 2010, which are more simplified, the unit test project template for Silverlight no longer includes a README.TXT file.
I’ve received reports from a number of people about issues with the test service automation support. Some of the NDA/preview users of the framework reported issues that were corrected, but there may still be some bugs out there. I’m working to investigate and post a fix if and when I know more.
In the meantime I know that StatLight, a third party system, has been updated for the April release and is working well for automation.
Please beware that some of your tests may need to be updated to use the new framework if your application, utility functions, or tests ever used the Application.Current.RootVisual (against the recommended pattern for interface testing).
The root visual is now the test framework application runner itself, and the tests run within the same TestPanel as before. Controls added to the test panel will not be located at the 0, 0 screen position, but likely near the bottom of the screen instead.
Hope this helps. To get started, download and install the April toolkit!
Jeff Wilcox is a Software Engineer at Microsoft in the Open Source Programs Office (OSPO), helping Microsoft engineers use, contribute to and release open source at scale.