結構前に書いたのですが、Silverlight の UnitTest Runner はブラウザー上で無いと実行出来ず、結果もブラウザーに出力という貧弱なものでした。
Silverlight Unit Test Runner について - お だ のスペース
これが Silverlight2 の時の話です。で、このまえ Tech Ed の BoF で似た様な話しが出てました。Silverlight4 になっても相変わらずなんですね〜、って事で少し調べてみました。
するとこんなツールが見つかりました。
Silverlight Testing Automation Tool - Home
作者のブログなのかな?これを見る限り、コンソールから .xap ファイルを渡して動かしてますね。
C#er : IMage: Automated Silverlight Unit Testing Using StatLight
ってことで試してみました。
UnitTest Framework は Silverlight Toolkit - Home を使っています。
テスト対象のページ MainPage.xaml.cs
using System.Windows; using System.Windows.Controls; namespace SilverlightApplication2 { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); } internal void button1_Click(object sender, RoutedEventArgs e) { this.textBlock1.Text = (int.Parse(this.textBox1.Text) + int.Parse(this.textBox2.Text)).ToString(); } } }テストクラス
using System.Windows; using Microsoft.VisualStudio.TestTools.UnitTesting; using SilverlightApplication2; namespace SilverlightTest1 { [TestClass] public class Tests { [TestMethod] public void TestMethod1() { MainPage m = new MainPage(); m.textBox1.Text = "10"; m.textBox2.Text = "20"; m.button1_Click(m.button1, new RoutedEventArgs()); Assert.AreEqual("30", m.textBlock1.Text); } } }
これを普通に実行すると(TestPage.html を開く)とこんな感じ
お〜 2 の頃より格段にキレイになってる!
でこれを、StatLight で動かしてみます。こんな感じのコマンドです。
statlight -x="<テスト用Silverlightの .xap ファイル>" -r="<レポート出力パス>"
すると、次のような StatLight 画面が立ち上がりテストを実行しています。
StatLight ってのがブラウザーをホストしてテストを実行しているようです。
結果の XML はこんな感じ。
<StatLightTestResults xapFileName="C:\Users\user\Documents\Visual Studio 2010\Projects\SilverlightApplication2\SilverlightTest1\Bin\Debug\SilverlightTest1.xap" total="1" ignored="0" failed="0" dateRun="2010-09-07 21:31:35"> <tests> <test name="SilverlightTest1.Tests.TestMethod1" resulttype="Passed" timeToComplete="00:00:00.0048840" /> </tests> </StatLightTestResults>
注意する事は、StatLight を実行するときは、管理者モードで動かして下さい。管理者モードで無いと、エラーが出ました。
ってか Silverlight 久しぶりで全然憶えてない。。