在.NET2005里用Test做自动化测试(WinForm)

    技术2022-05-11  68

     

     如果您还不会在.NET2005创建Test工程的话,请您查看我的另一篇文章《在.NET2005里创建测试工程》。

          下面我们就切入正题

    第一:我们要创建一个WinForm的工程。

    第二:写一段简单的小功能。

    (描述一下功能:选择不同的按钮,就会显示出选择按钮上面的文字) 下面是具体的代码: (Display.Designer.cs用来对窗体UI的一些设计,可以说是一些表现层的内容,系统自己生成的,不重要) namespace  ConsoleEnglist {    partial class Display    {        /// <summary>        /// 必需的设计器变量。        /// </summary>        private System.ComponentModel.IContainer components = null;        /// <summary>        /// 清理所有正在使用的资源。        /// </summary>        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>        protected override void Dispose(bool disposing)        {            if (disposing && (components != null))            {                components.Dispose();            }            base.Dispose(disposing);        }        Windows 窗体设计器生成的代码        ///         private System.Windows.Forms.Button btnA;        private System.Windows.Forms.Button btnB;        private System.Windows.Forms.Button btnC;        private System.Windows.Forms.Button btnD;        private System.Windows.Forms.Button btnE;        private System.Windows.Forms.Button btnF;        private System.Windows.Forms.Label labDisplay;    }}

    (DispLay.cs 是工程的具体实现类,可以算做是逻辑应用层,具体的操作都在这里呢)

    using  System; using  System.Collections.Generic; using  System.ComponentModel; using  System.Data; using  System.Drawing; using  System.Text; using  System.Windows.Forms; namespace  ConsoleEnglist {    public partial class Display : Form    {        public Display()        {            InitializeComponent();        }        private void btnA_Click(object sender, EventArgs e)        {            this.labDisplay.Text = btnA.Text;        }        private void btnB_Click(object sender, EventArgs e)        {            this.labDisplay.Text = btnB.Text;        }        private void btnC_Click(object sender, EventArgs e)        {            this.labDisplay.Text = btnC.Text;        }        private void btnD_Click(object sender, EventArgs e)        {            this.labDisplay.Text = btnD.Text;        }        private void btnE_Click(object sender, EventArgs e)        {            this.labDisplay.Text = btnE.Text;        }        private void btnF_Click(object sender, EventArgs e)        {            this.labDisplay.Text = btnF.Text;        }    }}

     

    OK,编译一下,通过后,我们就开始做自动化测试了。(下面很重要呀) 第三:创建自动化测试。 当前程序不要Close,在.NET2005的快捷图标中选择“新建测试”如下图: (如果没找到请做一下操作    视图----工肯栏----测试工具) 弹出下面的选择面板,请选择“单元测试向导”,按“确定”。如下图: (具它的测试模板,我会在以后的文章中一一说明 ) 接下来就是要会弹出一个窗体寻问您要创建的测试工程叫什么名字,这个你可以随便写,我的这个是默认的叫TestProject1。然后按“确定”按钮。这时会弹出一个窗体让你对当前工程(指的是一开始写的那个小程序)进行选择,因为我们要做自动化的测试,我们点选Display哪个类(因为我们这个程序只有两个类,一个是UI程序的入口类Program,另一个就是Display,Program对我们做下面的测试一点也没关系,所以我们就只选Display。如果您的程序还要用到别的类,切记也一定要选中呀)。如下图:  这时会生成一个测试工程,测试工程里有面有两个类文件,其中一个是DisplayTest.cs,一个是VSCodeGenAccessors.cs 这两个文件都很重要,VSCodeGenAccessors.cs里面放的是一些工程的UI,变量,方法等的引用,而DisplayTest.cs里面就是自动生成的测试代码。VSCodeGenAccessors.cs的内容看起来很繁琐,你不要怛心,其实很简单我会之后专门介绍一下这个类。DisplayTest.cs内容对我们的要求来说是不是很好用的。但是可以参考一下。接下来我们就要改一下DisplayTest.cs的内容。 (DisplayTest.cs)   //  以下代码由 Microsoft Visual Studio 2005 生成。 //  测试所有者应该检查每个测试的有效性。 using  Microsoft.VisualStudio.TestTools.UnitTesting; using  System; using  System.Text; using  System.Collections.Generic; using  ConsoleEnglist; namespace  TestProject1 {    /// <summary>    ///这是 ConsoleEnglist.Display 的测试类,旨在    ///包含所有 ConsoleEnglist.Display 单元测试    ///</summary>    [TestClass()]    public class DisplayTest    {        private TestContext testContextInstance;        /// <summary>        ///获取或设置测试上下文,上下文提供        ///有关当前测试运行及其功能的信息。        ///</summary>        public TestContext TestContext        {            get            {                return testContextInstance;            }            set            {                testContextInstance = value;            }        }        附加测试属性        [DeploymentItem("ConsoleEnglist.exe")]        [TestMethod()]        public void chick()        {            int i = 0;            while (true)            {                if (i >= 1)                {                    break;                }                Display target = new Display();                target.Show();                //创建窗体实例,并显示出来                TestProject1.ConsoleEnglist_DisplayAccessor accessor = new                                                                                                            TestProject1.ConsoleEnglist_DisplayAccessor(target);                object sender = null// TODO: 初始化为适当的值                               EventArgs e = null// TODO: 初始化为适当的值                                accessor.btnA_Click(sender, e);                target.Refresh();                System.Threading.Thread.Sleep(1000);                                                accessor.btnB_Click(sender, e);                target.Refresh();                System.Threading.Thread.Sleep(1000);                                accessor.btnC_Click(sender, e);                target.Refresh();                System.Threading.Thread.Sleep(1000);                                accessor.btnD_Click(sender, e);                target.Refresh();                System.Threading.Thread.Sleep(1000);                                accessor.btnE_Click(sender, e);                target.Refresh();                System.Threading.Thread.Sleep(1000);                                accessor.btnF_Click(sender, e);                target.Refresh();                System.Threading.Thread.Sleep(1000);                i++;              }                            }                }} 然后进行编译,调试运行测试工程。 (选择这个运行测试,可以对测试程序进行调试,只要您在测试代码中设断点。) 运行过程中您会看到程序会被重新执行一遍(自动),同时在左下方有个测试结果,你可以看到你的程序是否通过了测试。哈哈你已经学会了自动化测试的入门,你可以自己写一些复杂的测试工程。试试,如果您有什么不会,可以给我留言,或者给我发Email:ttlhong1981@163.com 记得给一些评论呀!

    最新回复(0)