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

1、单元测试框架NUnitshell

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

测试框架:NUnit3ide

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。测试

 

2、测试框架TestStack.Whitespa

1. 在NuGet中安装TestStack.White.net

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

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

  a. 输入install-package TestStack.White

  b. 输入install-package Nunit

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

 

3、代码中引入

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(@"xx\xx.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");
         }

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

 

 

 

4、测试固件

【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】

忽略执行,即便单独执行也不能够

 

5、控件识别

【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");

 

6、Assert断言

Assert.AreEqual(expectedResult, actualResult);

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

相关文章
相关标签/搜索