Testing Modal Dialogs

time to read 3 min | 411 words

I'm trying to use NUnitForms to test NHibernate Query Analyzer, and I'm having problems testing some of the modal dialogs. What I want now is simply to find out if the modal dialog is displayed to the user. I can get my test method to load the modal dialog and an event to be fired when it does, but I don't know how I can access the form itself when I've done that.

In the code below, shown is set to true, but the test hang because the modal dialog is not closed, and I can't figute out a way to get the form so I could close it.

There is another hanlder, ModalFormActivatedHwnd, that gets the Hwnd of the shown form, but it's marked internal, so I can't use it. Any suggestion?

Here is the code:

 [TestFixture]
 public class MessageDialogTests : NUnitFormTest
 {
  string text = "Which ?? - Driven Design do you use?";
  string title = "What Design Driven?";
  string []args = {"Test Driven Design""Doamin Driven Design""User Driven Design""WTF Driven Design"};
  private bool shown;
  [Test]
  public void TestMessageDialogShowsForm()
  {
   ExpectModal("MessageDialog."+title,new ModalFormActivated(MessageDialogHanlderShowForm));
   shown = false;
   MessageDialog.Show(text, title, MessageBoxIcon.Question, args);
   Assert.IsTrue(shown,"Message Dialog was not shown");
  }
  private void MessageDialogHanlderShowForm()
  {
   shown = true;
  }
 }