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 ..等方法。