我是C#的新手,并试图用NUnit和NUnitForms编写一个简单的GUI单元测试.我想测试按钮上的单击是否打开新表单.
我的应用程序有两种形式,主窗体(Form1)和一个打开新窗体的按钮(密码):
private void button2_Click(object sender, EventArgs e)
{
Password pw = new Password();
pw.Show();
}
我的Test的源代码如下:
using NUnit.Framework;
using NUnit.Extensions.Forms;
namespace Foobar
{
[TestFixture]
public class Form1Test : NUnitFormTest
{
[Test]
public void TestNewForm()
{
Form1 f1 = new Form1();
f1.Show();
ExpectModal("Enter Password", "CloseDialog");
// Check if Button has the right Text
ButtonTester bt = new ButtonTester("button2", f1);
Assert.AreEqual("Load Game", bt.Text);
bt.Click();
}
public void CloseDialog()
{
ButtonTester btnClose = new ButtonTester("button2");
btnClose.Click();
}
}
}
NUnit输出是:
NUnit.Extensions.Forms.FormsTestAssertionException : expected 1 invocations of modal, but was invoked 0 times (Form Caption = Enter Password)
按钮文本检查成功.问题是ExpectModal方法.我也用Form的名字尝试过,但没有成功.
有谁知道什么可能是错的?
最佳答案 我自己想通了.可以通过两种方式显示Windows窗体:
>模态:“在继续使用应用程序的其余部分之前,必须关闭或隐藏模式窗体或对话框”
>无模式:“…让您无需关闭初始表单即可在表单和其他表单之间切换焦点.用户可以在显示表单时继续在任何应用程序的其他位置工作.”
使用Show()方法打开无模式Windows,使用ShowDialog()打开Modal窗口. NUnitForms只能跟踪模态对话框(这也是该方法命名为’ExpectModal’的原因).
我在源代码中将每个“Show()”更改为“ShowDialog()”,NUnitForms工作正常.