Nunit说明及简单DEMO
using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework; //安装好NUnit后,环境是XP的,发现无法启动,修改一下配置后才能运行 //修改NUnit.exe.config,在
//1. 在 <configuration> 下 加
// <startup>
// <requiredRuntime version="v4.0.30319" />
// </startup>
// 2. 在 <runtime> 加 // <runtime> // ……
// <loadFromRemoteSources enabled="true" />
// ……
// </runtime>
namespace Nunit
{
[TestFixtureAttribute]
//用来修饰测试类。这个属性标记一个类包含了测试方法。
//被TestFixtureAttribute修饰的类需满足以下限制
// a.必须是一个public类型,否则NUnit不会识别它。
// b.它必须有一个缺省的构造子,否则Nunit不能构建他。
// c.构造子不应该有任何方面的负面影响,因为在一个对话的过程中,NUnit可能构造类多次。
public class Program
{
int a = ;
int b = ;
[Test]
// 用来修饰测试方法。Test属性标记某个类的某个方法为一个测试方法,而且此类必需已经标记为一个TestFixture
static void Main(string[] args)
{
}
//用来修饰方法。所属的类必需已经标记为一个TestFixture。一个TestFixture可以仅有一个SetUp方法。如果有多个定义, TestFixture也会编译成功,但是测试不会运行。SetUpAttribute标记的方法是在每个测试方法被调用之前来完成的。
[TestFixtureSetUp]
//用来修饰方法。所属的类必需已经标记为一个TestFixture。这些个属性标记的方式在fixture任何测试执行之前完成。 TestFixture可以仅有一个TestFixtureSetUp方法。如果定义了多个,TestFixture可以成功编译,但是测试不会被执行。
public void TextInital()
{//初始化a,可以初始化数据连接等
a = ;
Console.WriteLine("测试开前执行一次");
Console.WriteLine("a=10");
}
// 用来修饰方法。所属的类必需已经标记为一个TestFixture。这些个属性标记的方式在fixture任何测试执行之后完成。TestFixture 可以仅有一个TestFixtureTearDownAttribute方法。如果定义了多个,TestFixture可以成功编译,但是测试不会被执行。 [TestFixtureTearDown] public void TextDispose()
{//初始化a,可以初始化数据连接等 Console.WriteLine("测试完成后执行一次");
} [SetUp]
public void BeforeEvery() {
b=;
Console.WriteLine("b=1");
Console.WriteLine("每个方法测试开始前都执行我");
} // 用来修饰方法。所属的类必需已经标记为一个TestFixture。一个TestFixture可以仅有一个TearDown方法。如果有多个定义, TestFixture也会编译成功,但是测试不会运行。被TearDownAttribute修饰的方法是每个测试方法被调用之后来执行的。 [TearDown]
public void afterEvery() {
b = ;
Console.WriteLine("b = 0");
Console.WriteLine("每个方法测试完成后都执行我");
} [Test]
public void Add()
{
bool t = a == ;
Assert.AreEqual(true, t);
} [Test, ExpectedException(typeof(ArgumentException))]
public void Sub()
{
int a = ;
int b = / a;
Assert.AreEqual(true, true);
} //修饰方法或修饰类。用来把测试分组,可以使用NUnit的Categories选项卡选择要测试的组,或排除一些组。
[Test]
[Category("group1")]
public void g1a()
{ Assert.AreEqual(true, true);
}
[Test]
[Category("group1")]
public void g1b()
{
Assert.AreEqual(true, true);
} [Test]
[Category("group2")]
public void g2a()
{ Assert.AreEqual(false, true);
}
[Test]
[Category("group2")]
public void g2b()
{
Assert.AreEqual(false, true);
} [Test]
public void withfixture()
{
Assert.AreEqual(true, (b == ));
} [Test]
[Explicit]
//用来修饰类或方法。Explicit属性会忽略一个测试或测试Fixture,直到它被显式的选择运行。。如果test和test fixture在执行的过程中被发现,就忽略他们。所以,这样一来进度条显示为黄色,因为有test或test fixture忽略了。
public void withoutfixture()
{
Assert.AreEqual(true, (b == ));
} [Test]
[Ignore]
// 用来修饰类或方法。由于种种原因,有一些测试我们不想运行.当然,这些原因可能包括你认为这个测试还没有完成,这个测试正在重构之中,这个测试的需求不是太明确.但你有不想破坏测试,不然进度条可是红色的哟.怎么办?使用Ignore属性.你可以保持测试,但又不运行它们。
//这个特性用来暂时不运行一个测试或fixture。比起注释掉测试或重命名方法,这是一个比较好的机制,因为测试会和余下的代码一起编译,而且在运行时有一个不会运行测试的标记,这样保证不会忘记测试。 public void Ignore()
{
Assert.AreEqual(true, true);
} }
}
执行结果如下
测试开前执行一次
a=10
***** Nunit.Program.Add
b=1
每个方法测试开始前都执行我
b = 0
每个方法测试完成后都执行我
***** Nunit.Program.g1a
b=1
每个方法测试开始前都执行我
b = 0
每个方法测试完成后都执行我
***** Nunit.Program.g1b
b=1
每个方法测试开始前都执行我
b = 0
每个方法测试完成后都执行我
***** Nunit.Program.Sub
b=1
每个方法测试开始前都执行我
b = 0
每个方法测试完成后都执行我
***** Nunit.Program.withfixture
b=1
每个方法测试开始前都执行我
b = 0
每个方法测试完成后都执行我
测试完成后执行一次
Nunit说明及简单DEMO的更多相关文章
- 设计模式之单例模式的简单demo
/* * 设计模式之单例模式的简单demo */ class Single { /* * 创建一个本类对象. * 和get/set方法思想一样,类不能直接调用对象 * 所以用private限制权限 * ...
- Spring的简单demo
---------------------------------------- 开发一个Spring的简单Demo,具体的步骤如下: 1.构造一个maven项目 2.在maven项目的pom.xml ...
- 使用Spring缓存的简单Demo
使用Spring缓存的简单Demo 1. 首先创建Maven工程,在Pom中配置 <dependency> <groupId>org.springframework</g ...
- Managed DirectX中的DirectShow应用(简单Demo及源码)
阅读目录 介绍 准备工作 环境搭建 简单Demo 显示效果 其他 Demo下载 介绍 DirectX是Microsoft开发的基于Windows平台的一组API,它是为高速的实时动画渲染.交互式音乐和 ...
- angular实现了一个简单demo,angular-weibo-favorites
前面必须说一段 帮客户做了一个过渡期的项目,唯一的要求就是速度,我只是会点儿基础的php,于是就用tp帮客户做了这个项目.最近和客户架构沟通,后期想把项目重新做一下,就用现在最流行的技术,暂时想的使用 ...
- Solr配置与简单Demo[转]
Solr配置与简单Demo 简介: solr是基于Lucene Java搜索库的企业级全文搜索引擎,目前是apache的一个项目.它的官方网址在http://lucene.apache.org/sol ...
- 二维码简单Demo
二维码简单Demo 一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name=&qu ...
- android JNI 简单demo(2)它JNI demo 写
android JNI 简单demo(2)它JNI demo 写 一.搭建Cygwin 环境:http://blog.csdn.net/androidolblog/article/details/25 ...
- Ext简单demo示例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
随机推荐
- php错误和异常的重定向
通过重定向错误或异常,我们可以更安全的显示错误信息,一般也用来记录错误和异常日志. 参数可以是全局函数名,也可以是类中的方法,非静态方法通过数组传递类名和方法名进去, 静态方法直接带命名空间和类名,看 ...
- kindle关闭自动同步
登录网页,在我的“管理我的内容和设备”里,关闭自动同步设置
- ruoyi LogUtils
package com.ruoyi.framework.util; import java.io.PrintWriter; import java.io.StringWriter; import ja ...
- Vus the Cossack and Strings(Codeforces Round #571 (Div. 2))(大佬的位运算实在是太强了!)
C. Vus the Cossack and Strings Vus the Cossack has two binary strings, that is, strings that consist ...
- Python笔记_第三篇_面向对象_4.单下划线和双下划线
说道这里我们需要稍微暂停一下.前面我们说到了类是作为一个对象存放容器.这个容器里面有属性和方法.最好的理解类的方式就是把类想想成一个容器. 然后构造了一个析构函数和构造函数,然后又对object和se ...
- Python笔记_第一篇_面向过程_第一部分_6.语句的嵌套
学完条件控制语句和循环控制语句后,在这里就会把“语言”的精妙之处进行讲解,也就是语句的嵌套.我们在看别人代码的时候总会对一些算法拍案叫绝,里面包含精妙和精密的逻辑分析.语句的嵌套也就是在循环体内可以嵌 ...
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字典类型(dict)
字典!在Python中字典是另一种可变容器模型,可以存储任意类型的对象.是Python存储数据类型的最高级(maybe). 特点:1. 字典的存储方式和其他类型数据略有不同,是通过键(key)和值(v ...
- GCC编译和链接多个文件(包括源文件、目标文件、汇编文件等)
编译多个源代码文件会生成多个目标文件,每个目标文件都包含一个源文件的机器码和相关数据的符号表.除非使用-c选项指示 GCC 只编译不链接,否则 GCC 会使用临时文件作为目标文件输出: $ gcc - ...
- idea高效插件
RestfulToolkit:url定位controller,快捷键:ctrl+\Maven Helper:依赖分析JRebel:热部署Rainbow Brackets:个性化花括号aiXcode:a ...
- [原]C++新标准之std::chrono::time_point
原 总结 STL 标准库 chrono time_point ratio 概览 类定义 总结 思考 拓展 system_clock steady_clock high_resolution_cloc ...