GUIテストフレームワークwhiteがすごい
たとえばこんなWindowsアプリがあったとして、
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { this.textBox1.Text = "Hello white"; } } }
こんなコードでbutton1のクリック結果をNUnitでテスト可能。
using System; using NUnit.Framework; using White.Core; using White.Core.UIItems; namespace WindowsFormsApplication1Test { [TestFixture] public class Class1 { [Test] public void Test() { var exe = @"D:\Work\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe"; using (var app = White.Core.Application.Launch(exe)) { var win = app.GetWindow("Form1"); var button = win.Get<Button>("button1"); button.Click(); Assert.AreEqual("Hello white", win.Get<TextBox>("textBox1").Text); } } } }
さすがにDataGridとかはテストできなそうだけど、これは調査しないとダメだな。WindowsFormsだけじゃなくて、WPFとかSilverlightもテストできるっぽいし。
ちなみに上記のコードをコンパイルするためには、テストアセンブリにWhite.Core.dllの参照が必要。