/// <summary>
///Tests the reset form button
///</summary>
[TestMethod()]
public void frmResetLinkTestNo()
{
frmQuote_Accessor target = new frmQuote_Accessor();
AutomotiveManager_Accessor._isBeingTested = true;
AutomotiveManager_Accessor._messageBoxResult = DialogResult.No;
target.txtVehicleSalesPrice.Text = "1000";
object sender = null;
EventArgs e = new EventArgs();
target.lnkReset_Click(sender, e);
// This assert fails
Assert.AreEqual(true, target.txtVehicleSalesPrice.Focused);
Assert.AreEqual("1000", target.txtVehicleSalesPrice.SelectedText);
}
方法调用target.lnkReset_Click(sender, e)
触发一个事件处理程序,该事件处理程序显示一个返回YES或NO结果的对话框。如果用户按YES或NO,则会聚焦名为txtVehicleSalesPrice
的表单的第一个文本框元素。当我手动测试它时,此功能有效,但如果元素被聚焦,则无法获得准确的结果。第二个断言检查是否选择了文本。
单元测试需要做些什么才能检查表单元素是否已被聚焦?
答案 0 :(得分:0)
我没有明白你的意思。 但是如果你想检查一个控件(例如Button1)是否有焦点。 你可以用这个:
if (Button1.Focused){
MessageBox.Show("The button is focused");
}
答案 1 :(得分:-2)
好吧,我会说你需要模仿'YES'和'NO'的对话框。使用此模拟,您可以强制表单以您希望的方式运行。然后检查该字段是否确实是焦点。
您可以简单地在构造函数中构建对话框并将其设置在公共属性中,或者您可以创建一个可模拟的IYesNoDialog工厂来生成多个。最好的方法是使用接口抽象表单,如下例所示。
public interface IYesNoDialog {
// DialogResult, I guess...
// Whatever methods you need here to open the Dialog and control it.
}
public class YesNoDialog: Form, IYesNoDialog {
//Implementation of the dialog here...
}
public class WhateverForm: Form {
public IYesNoDialog YesNoDialog { get; set;}
public WhateverForm() {
this.YesNoDialog = new YesNoDialog();
}
}
**如果我误用了基本类型,请抱歉。我的WinForms背景很远,但概念保持不变。