GUIテストフレームワークwhiteがすごい

http://white.codeplex.com/

たとえばこんな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の参照が必要。