项目搭建(二):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(@"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("");
}
打开【测试】-【窗口】-测试资源管理器;在解决方案右键->生成解决方案;

四、测试固件
【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 = ;
int number = / 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 ..等方法。
项目搭建(二):NUnit&TestStack.White的更多相关文章
- vuejs学习——vue+vuex+vue-router项目搭建(二)
前言 最近比较忙,所有第二章发布晚了,不好意思各位. vuejs学习——vue+vuex+vue-router项目搭建(一) 中我们搭建好了vue项目,我相信大家已经体验了vue其中的奥妙了,接下来我 ...
- 基于webpack的React项目搭建(二)
前言 前面我们已经搭建了基础环境,现在将开发环境更完善一些. devtool 在开发的过程,我们会经常调试,so,为了方便我们在chrome中调试源代码,需要更改webpack.config.js,然 ...
- IDEA项目搭建二——使用SpringBoot创建Web层
一.编写底层代码 1.demo-common中创建FormatString类 先在默认com.tyh中创建package命名为common 删除自动生成的app.java,在common包下创建新类 ...
- vuejs学习——vue+vuex+vue-router项目搭建(三)
前言 vuejs学习——vue+vuex+vue-router项目搭建(一) vuejs学习——vue+vuex+vue-router项目搭建(二) 为什么用vuex:组件之间的作用域独立,而组件之间 ...
- 从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建
从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建 废话不说,直接撸步骤!!! 1.创建主项目:ncc-parent 选择maven创建项目,注意在创建项目中,packing选择 ...
- 从壹开始 [ Nuxt.js ] 之二 || 项目搭建 与 接口API
前言 哈喽大家周一好,今天的内容比较多,主要就是包括:把前端页面的展示页给搭出来,然后调通接口API,可以添加数据,这两天我也一直在开发,本来想一篇一篇的写,发现可能会比较简单,就索性把项目搭建的过程 ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之二 || 后端项目搭建
前言 至于为什么要搭建.Net Core 平台,这个网上的解释以及铺天盖地,想了想,还是感觉重要的一点,跨平台,嗯!没错,而且比.Net 更容易搭建,速度也更快,所有的包均有Nuget提供,不再像以前 ...
- springboot系列二、springboot项目搭建
一.官网快速构建 1.maven构建项目 1.访问http://start.spring.io/ 2.选择构建工具Maven Project.Spring Boot版本2.1.1以及一些工程基本信息, ...
- vue项目搭建 (二) axios 封装篇
vue项目搭建 (二) axios 封装篇 项目布局 vue-cli构建初始项目后,在src中进行增删修改 // 此处是模仿github上 bailicangdu 的 ├── src | ├── ap ...
随机推荐
- vuejs基础-事件修饰符
事件修饰符: .stop 阻止冒泡 .prevent 阻止默认事件 .capture 添加事件侦听器时使用事件捕获模式 .self 只当事件在该元素本身(比如不是子元素)触发时触发回调 .once 事 ...
- Learning OSG programing---Multi Camera in Multi window 在多窗口中创建多相机
这个例子演示了在多个窗口中创建多个相机,函数的代码如下: void multiWindowMultipleCameras(osgViewer::Viewer& viewer,bool mult ...
- tomcat安装分享
安装Tomcat前需要安装JDK 安装的jdk1.8 解压 在vim /etc/profile下面添加以下内容 export JAVA_HOME=/jdk/jdk1.8.0_111export ...
- python学习第十一天列表的分片和运算
列表的分片也叫切片,也就是从列表中取出一段赋值给另外一个变量,列表运算就是可以进行比较运算,连接运算,乘法运算等. 1,列表的分片 n1=[1,2,3,4,5,6,7,8,9] n2=[1:3] 包含 ...
- 浅谈随机数发生器(C语言)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/svitter/article/details/30971395 本文出自:点击打开链接 本来在做数据 ...
- BUUCTF--内涵的软件
测试文件:https://buuoj.cn/files/0450881183f6478e110f9ea27581683b/70125468-0786-4705-bd91-87037f8f3e16.ex ...
- C# DataTable、实体相互转换
public static T GetEntity<T>(DataTable table) where T : new() { T entity = new T(); foreach (D ...
- vim常用快捷键及操作记录
1. 安装 sudo apt-get install vim 或者 yum install -y vim-enhanced 2. 具体使用技巧如下 打开文件: 命令/操作 说明 vim + filen ...
- centos(6-7)安装openldap
前言 参考资料: http://yhz61010.iteye.com/blog/2352672 https://www.cnblogs.com/lemon-le/p/6266921.html 实验环境 ...
- 《深入学习Redis(2):持久化》笔记
参考 https://www.cnblogs.com/kismetv/p/9137897.html 一.高可用概述 提供正常服务:主从分离,快速容灾技术,数据容量的扩展.数据安全不会丢失. 持久 ...