「コマンド」クラスがあります:
public static class MyCommands
{
private static ICommand exitCommand = new RoutedCommand();
public static ICommand ExitCommand { get { return exitCommand; } }
}
MainWindow.xaml.cs の分離コード:
private void BindCommands()
{
this.CommandBindings.Add(new CommandBinding(MyCommands.ExitCommand, this.Exit));
}
private void Exit(object sender, ExecutedRoutedEventArgs e)
{
Application.Current.Shutdown();
}
また、メニュー バーを実装するユーザー コントロール内の XAML は次のとおりです。
<MenuItem Header="_Exit"
Command="{x:Static local:MyCommands.ExitCommand}"
/>
コードは機能します。全体的なパターンが気に入っているので、使い続けたいと思っています。
ただし、テスト駆動開発を行い、単体テストと統合テストで 100% のカバレッジを達成するなど、他の目標も追求しようとしています。また、StyleCop と FxCop の警告に 100% 準拠したいと考えています。そして、私はここで捕まっています。
FxCop (Microsoft.Security:CA2109) で推奨されているように、私のMainWindow.Exit()
メソッドは非公開ですが、これはテストから直接呼び出すことができないことを意味します。公開して FxCop メッセージを非表示にできると思います。または、アクセサーを使用できます。しかし、私はプライベート メソッドに対して直接テストを書くことに偏見を持っています。特にこの場合は、コマンド バインディング自体ではなく、メソッドをテストするだけなので。
コマンドが意図したとおりに機能することを確認できるように、テストコードからコマンドを呼び出す他の方法が必要だと感じています(手動でテストする以外に)。助言がありますか?