zoukankan      html  css  js  c++  java
  • 项目搭建(二):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 ..等方法。

  • 相关阅读:
    Spring MVC的路径匹配规则 Ant-style
    mybatis的mapper参数传递
    mybatis映射文件的使用(一),工程目录结构、源代码和数据库
    mappers标签引入映射器的四种方式
    Java语言定义的线程状态分析
    MySQL中varchar最大长度是多少
    mysql中字符串类型char(n)和varchar(n)的区别
    CORS解决跨域问题的几种方法
    使用自定义注解和springAOP捕获Service层异常,并处理自定义异常
    自定义HttpMessageConverter实现RestTemplate的exchange方法返回自定义格式数据
  • 原文地址:https://www.cnblogs.com/happy-xiaoxiao/p/11553644.html
Copyright © 2011-2022 走看看