PrismのWP7用のライブラリのコードを読みながら気ままにTwitterをしていたら、単体テストのプロジェクトがあるので実行してみました。
WP7のエミュレータが起動して、ばばば〜っとテストを消化してくれてます。テストコードも以下のようにVisual Studioの単体テストのコードでいけるみたいです。
// お馴染みの属性でいける! [TestClass] public class ApplicationBarButtonCommandFixture { [TestMethod] public void CommandBehaviorMonitorsCanExecuteToSetEnabledWhenCanExecuteIsTrue() { var page = new PhoneApplicationPage(); var bar = new ApplicationBar(); var button = new ApplicationBarIconButton(new Uri("/foo.png", UriKind.Relative)); button.Text = "Foo"; bar.Buttons.Add(button); page.ApplicationBar = bar; var command = new ApplicationBarButtonCommand(); command.ButtonText = "Foo"; var bindingSource = new MyCommandHolder(); var binding = new Binding("Command") { Source = bindingSource, Mode = BindingMode.OneWay }; command.CommandBinding = binding; Interaction.GetBehaviors(page).Add(command); bindingSource.CanExecute = true; Assert.IsTrue(button.IsEnabled); } [TestMethod] public void CommandBehaviorMonitorsCanExecuteChangedToUpdateEnabledWhenCanExecuteChangedIsRaised() { var page = new PhoneApplicationPage(); var bar = new ApplicationBar(); var button = new ApplicationBarIconButton(new Uri("/foo.png", UriKind.Relative)); button.Text = "Foo"; bar.Buttons.Add(button); page.ApplicationBar = bar; var command = new ApplicationBarButtonCommand(); command.ButtonText = "Foo"; var bindingSource = new MyCommandHolder(); var binding = new Binding("Command") { Source = bindingSource, Mode = BindingMode.OneWay }; command.CommandBinding = binding; Interaction.GetBehaviors(page).Add(command); bindingSource.CanExecute = true; var initialState = button.IsEnabled; bindingSource.CanExecute = false; var finalState = button.IsEnabled; Assert.IsTrue(initialState); Assert.IsFalse(finalState); } public class MyCommandHolder { private bool canExecute; // 以下略
ちょっとこれどうやって自分で作るプロジェクトで作るのか試してみよう。