2005年06月08日

アジャイラー(または、アジャイラーになりたい)人にお薦めの本


 JSF、HibernateSpringを連携させての開発についての本です。
 アジャイル開発をやっていく上で今後欠かせないと思われるJSF、HibernateSpringについてとてもわかりやすく書いてあると思います。

 Java開発者だけでなくNHibernateSpring.NETにも通じるものがあると思うので、.NET開発者にもお薦めの1冊です。

posted by よっしぃ at 23:23 | Comment(0) | TrackBack(0) | アジャイル

2005年05月28日

.NET Windowsアプリケーション プロジェクトのFormのテストができちゃう裏技

 .NET Windowsアプリケーション プロジェクトのFormがNUnitFormsでテストができるようになる裏技を紹介します。


 例として、以下のようなソリューションを考えます。


Src
│  NUnitFormsSample.sln
│ 
├─WindowsApp
│      App.ico
│      AssemblyInfo.cs
│      MainForm.cs
│      MainForm.resx
│      WindowsApp.csproj
│      WindowsApp.csproj.user
│     
└─WindowsAppTest
        AssemblyInfo.cs
        MainFormTest.cs
        WindowsAppTest.csproj
        WindowsAppTest.csproj.user
       
 WindowsAppとWindowsAppTestの2つのプロジェクトを持つNUnitFormsSampleソリューションです。
 WindowsAppはWindowsアプリケーション プロジェクトでWindowsAppTestは、クラスライブラリ プロジェクトです。


 WindowsAppTest.csprojをテキストエディタで開き、


        <Files>
            <Include>
                <File
                    RelPath = "AssemblyInfo.cs"
                    SubType = "Code"
                    BuildAction = "Compile"
                />
                <File
                    RelPath = "MainFormTest.cs"
                    SubType = "Code"
                    BuildAction = "Compile"
                />
            </Include>
        </Files>

の部分に


                <File
                    RelPath = "MainForm.cs"
                    Link = "..\WindowsApp\MainForm.cs"
                    SubType = "Form"
                    BuildAction = "Compile"
                />

を追加して、


        <Files>
            <Include>
                <File
                    RelPath = "AssemblyInfo.cs"
                    SubType = "Code"
                    BuildAction = "Compile"
                />
                <File
                    RelPath = "MainForm.cs"
                    Link = "..\WindowsApp\MainForm.cs"
                    SubType = "Form"
                    BuildAction = "Compile"
                />
                <File
                    RelPath = "MainFormTest.cs"
                    SubType = "Code"
                    BuildAction = "Compile"
                />
            </Include>
        </Files>

として下さい。これでWindowsAppTestプロジェクトでMainFormクラスが参照できるようになります。これが今回の一番のミソです。


 あとは、MainFormTest.csのテストメソッドでMainFormを呼び出せば、WindowsアプリケーションプロジェクトのFormのテストができます。


 参考にこの例のコードを抜粋して載せておきます。


MainForm.cs
 public class MainForm : System.Windows.Forms.Form
 {
  private System.Windows.Forms.TextBox textBox1;
  private System.Windows.Forms.TextBox textBox2;
  private System.Windows.Forms.Label ResultLabel;
  private System.Windows.Forms.Button GoButton;


・・・・・・・


  private void GoButton_Click(object sender, System.EventArgs e)
  {
   if(DialogResult.Yes == MessageBox.Show("Ready?", "Confirm", MessageBoxButtons.YesNo,
   MessageBoxIcon.Question))
    ResultLabel.Text = textBox1.Text + textBox2.Text;
  }
 }

MainFormTest.cs
 [TestFixture]
 public class MainFormTest : NUnitFormTest
 {
  public MainFormTest()
  {
  }

  [Test]
  public void SampleMethod()
  {
   ExpectModal( "Confirm", "MessageBoxYesHandler" );

   using(MainForm mainForm = new MainForm())
   {
    mainForm.Show();

    using(KeyboardController mainFormKeyCon
       = new KeyboardController(new FormTester("MainForm")))
    {
     mainFormKeyCon.Press(Key.A);
     mainFormKeyCon.Press(Key.TAB);
     mainFormKeyCon.Press(Key.B);
    }

    ButtonTester goButton = new ButtonTester("GoButton", mainForm);
    goButton.Click();

    LabelTester resultLabel = new LabelTester("ResultLabel", mainForm);
    Assert.AreEqual("ab", resultLabel.Text);
   }
  }

  /// <summary>
  /// ExpectModalで指定されたMessageBoxが表示された場合に実行される処理です。
  /// </summary>
  public void MessageBoxYesHandler()
  {
   MessageBoxTester messageBox = new MessageBoxTester( "Confirm" );
   Assert.AreEqual("Ready?", messageBox.Text);
   messageBox.SendCommand(MessageBoxTester.Command.Yes);
  }
  
  /// <summary>
  /// NUnitFormTestを継承した場合、UseHiddenをfalseにしないとテストでエラーになる。
  /// </summary>
  public override bool UseHidden
  {
   get
   {
    return false;
   }
  }
 }

 どうですか?
 是非試して下さい。
 Winsowsアプリケーションのテストも自動化して、アジャイルで行きましょ〜♪



サンプルのダウンロードページ

posted by よっしぃ at 21:55 | Comment(0) | TrackBack(0) | アジャイル

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。