• 项目搭建(二):NUnit&TestStack.White


    一、单元测试框架NUnit

    NUnit是所有.net语言的单元测试框架。使用C#语言编写。

    测试框架:NUnit3

    1. 安装NuGet包管理器

    2. 在NuGet中安装NUnit、NUnit.Console和NUnit 3 Test Adapter

    本地安装版本为:NUnit(3.12.0)、NUnit.Console(3.10.0)NUnit 3 Test Adapter(V3.15.1.0)

    此时查看项目引用中包含nunit.framework.dll,安装完重启VS。

    二、测试框架TestStack.White

    1. 在NuGet中安装TestStack.White

    2. 或者可通过NuGet控制台(PowerShell)进行安装

      在VS中打开工具->NuGet包管理器->程序包管理器控制台(Powershell,如果没有可手动下载)

      a. 输入install-package TestStack.White

      b. 输入install-package Nunit

    此时查看项目引用中包含TestStack.White,安装完重启VS。

    三、代码中引入

    NUnit作用是添加【TestFixture】等测试标识,引入using NUnit.Framework;

    TestStack.White作用是封装了识别应用程序和控件的方法。

    using TestStack.White; 
    using TestStack.White.Factory;
    using TestStack.White.UIItems.WindowItems;
    using TestStack.White.UIItems;
    using TestStack.White.UIItems.Finders;
    using NUnit.Framework;
    
    namespace myProject01
    {
        [TestFixture]
        class Program
        {
            static Application posApp;
            [SetUp]
            public void setUp() {
                posApp = Application.Launch(@"xxxx.exe");
                Console.WriteLine("setup");
            }
            [TearDown]
            public void tearDown()
            {
                posApp.Close();
                Console.WriteLine("teardown");
            }
            //项目执行需要有main函数,此处先和在这里,没有实际作用,为了编译通过。。。
            static void Main(string[] args) { }
    
            [Test]
            public void testcase_login()
            {
                 Window posWindow = posApp.GetWindow("登录", InitializeOption.NoCache);
                 TextBox usertext = posWindow.Get<TextBox>(SearchCriteria.ByAutomationId("txt_no"));
                 usertext.SetValue("0114");
             }

     打开【测试】-【窗口】-测试资源管理器;在解决方案右键->生成解决方案;

     

    四、测试固件

    【TestFixture】:

    用在class前面,表示该类包含测试,此类必须是public的

    【Test】

    表示该函数为一个testcase

    【SetUp】【TearDown】:

    测试固件前置条件和后置条件,作用于每个testcase

    【TestFixtureSetUp】【TestFixtureTearDown】

    测试固件前置条件和后置条件,作用于每个【TestFixture】

    【ExpectedException】 :

    用例预期会抛出Exception,如果没有抛用例就会失败。比如用任何数除以0会得到DivideByZeroException,这时可以在TestCase前面加上ExpectedException

    [Test]
    [ExpectedException("System.DivideByZeroException")]
    public void testException() {
    int zero = 0 ;
    int number = 2 / zero;
    }

    【Explicit】

    执行全部用例时会忽略执行,单独选中该testcase可以执行

    【Ignore】

    忽略执行,即使单独执行也不可以

    五、控件识别

    【TextBox】

             TextBox usertext = posWindow.Get<TextBox>(SearchCriteria.ByAutomationId("txt_no"));

             usertext.SetValue("0114");

    【Button】

          var button = posWindow.Get<Button>("btn_login");

             button.Click();

       [Label]

            classname为Text的可使用Label,一般为点击文字事件的。

         var serverSet = posWindow.Get<Label>(SearchCriteria.ByAutomationId("lbl_chgServer"));

            serverSet.Click();

    【自定义类】

      添加引用,引入自定义的ClassLibrary2.dll

      using BaseTest;

           BaseClass.ClickLeftMouse(processId, "CtrButtonCon5");

    六、Assert断言

    Assert.AreEqual(expectedResult, actualResult);

    Assert 类包含 AreEqual,AreSame,Equals, Fail,IsFalse,IsNotNull ..等方法。

  • 相关阅读:
    Kafka写入流程和副本策略
    Kafka消费分组和分区分配策略
    Kafka安装和常用操作命令
    面试:谈谈你对大数据的理解
    HDFS写数据和读数据流程
    java笔记之分支、循环语句
    java笔记之分支、循环语句
    java笔记之运算符
    java笔记之运算符
    java笔记之java内存结构
  • 原文地址:https://www.cnblogs.com/happy-xiaoxiao/p/11553644.html
Copyright © 2020-2023  润新知