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的更多相关文章

  1. 设计模式之单例模式的简单demo

    /* * 设计模式之单例模式的简单demo */ class Single { /* * 创建一个本类对象. * 和get/set方法思想一样,类不能直接调用对象 * 所以用private限制权限 * ...

  2. Spring的简单demo

    ---------------------------------------- 开发一个Spring的简单Demo,具体的步骤如下: 1.构造一个maven项目 2.在maven项目的pom.xml ...

  3. 使用Spring缓存的简单Demo

    使用Spring缓存的简单Demo 1. 首先创建Maven工程,在Pom中配置 <dependency> <groupId>org.springframework</g ...

  4. Managed DirectX中的DirectShow应用(简单Demo及源码)

    阅读目录 介绍 准备工作 环境搭建 简单Demo 显示效果 其他 Demo下载 介绍 DirectX是Microsoft开发的基于Windows平台的一组API,它是为高速的实时动画渲染.交互式音乐和 ...

  5. angular实现了一个简单demo,angular-weibo-favorites

    前面必须说一段 帮客户做了一个过渡期的项目,唯一的要求就是速度,我只是会点儿基础的php,于是就用tp帮客户做了这个项目.最近和客户架构沟通,后期想把项目重新做一下,就用现在最流行的技术,暂时想的使用 ...

  6. Solr配置与简单Demo[转]

    Solr配置与简单Demo 简介: solr是基于Lucene Java搜索库的企业级全文搜索引擎,目前是apache的一个项目.它的官方网址在http://lucene.apache.org/sol ...

  7. 二维码简单Demo

    二维码简单Demo 一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name=&qu ...

  8. android JNI 简单demo(2)它JNI demo 写

    android JNI 简单demo(2)它JNI demo 写 一.搭建Cygwin 环境:http://blog.csdn.net/androidolblog/article/details/25 ...

  9. Ext简单demo示例

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

随机推荐

  1. mysql my.ini 性能调优

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...

  2. Spring Cloud Hystrix熔断器隔离方案

      Hystrix组件提供了两种隔离的解决方案:线程池隔离和信号量隔离.两种隔离方式都是限制对共享资源的并发访问量,线程在就绪状态.运行状态.阻塞状态.终止状态间转变时需要由操作系统调度,占用很大的性 ...

  3. 第一行代码新闻例子报错 Unable to start activity ComponentInfo 原因

    E/AndroidRuntime: FATAL EXCEPTION: main Process: com.timemanager.jason.fragmentbestpractice, PID: 56 ...

  4. Spring注解配置和xml配置优缺点比较

    Spring注解配置和xml配置优缺点比较 编辑 ​ 在昨天发布的文章<spring boot基于注解方式配置datasource>一文中凯哥简单的对xml配置和注解配置进行了比较.然后朋 ...

  5. ZJNU 2235 - EnDlEsS ChAsE

    因为速度值保证各不相同 所以n只战斗人形会出现 n! 种不同情况 可以用不同id表示不同人形的速度 比如1 2 3三只人形 他们可能的排列有 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 ...

  6. Python模块——base64

    简介 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节表示,写出数值就是0-63.故三个字 ...

  7. AtCoder Beginner Contest 129

    ABCD 签到(A.B.C过水已隐藏) #include<bits/stdc++.h> using namespace std; ; int n,m,ans,f1[N][N],f2[N][ ...

  8. restful的简单使用

    根据http的不同方法,访问不同路由的相同控制器下的不同方法可以实现restful的使用 分别对应 路由方式 get put delete post 对应操作 获取 更新 删除 添加 其中如果要在非l ...

  9. Python笔记_第一篇_面向过程_第一部分_6.语句的嵌套

    学完条件控制语句和循环控制语句后,在这里就会把“语言”的精妙之处进行讲解,也就是语句的嵌套.我们在看别人代码的时候总会对一些算法拍案叫绝,里面包含精妙和精密的逻辑分析.语句的嵌套也就是在循环体内可以嵌 ...

  10. 翻译——1_Project Overview, Data Wrangling and Exploratory Analysis-checkpoint

    为提高提高大学能源效率进行建筑能源需求预测 本文翻译哈佛大学的能源分析和预测报告,这是原文 暂无数据源,个人认为学习分析方法就足够 内容: 项目概述 了解数据 探索性分析 使用不同的机器学习方法进行预 ...