项目搭建(二):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 ..等方法。

原文地址:https://www.cnblogs.com/happy-xiaoxiao/p/11553644.html