Nunit之单元测试
Nunit2.0学习
1.颜色说明:
绿色 描述目前所执行的测试都通过
黄色 意味某些测试忽略,但是这里没有失败
红色 表示有失败
2.常用属性
1.Test Fixture:表示类包含测试.
- 必须是Public,否则NUnit看不到它的存在.
- 它必须有一个缺省的构造函数,否则是NUnit不会构造它.
- 构造函数应该没有任何副作用,因为NUnit在运行时经常会构造这个类多次,如果要是构造函数要什么副作用的话,那不是乱了.
using System;
using NUnit.Framework; 

namespace UnitTest3
{
[TestFixture]
class test
{
[Test]
public void testcase()
{
int a , b;
a = 3;
b = 4;
Assert.AreEqual(a+b,5);
}
}

2.Test :表示标示TestFixture的类是要(可以)测试的. 为了与之前版本兼容,Test大小写都可以.
3.关键类
Assert ,翻译为断言.它是一个类.有如下关键方法:
AreEqual,AreSame,Equals, Fail,Ignore,IsFalse,IsNotNull ect .
下面是这个类的源码
public class Assert
{
// Methods
static Assert();
protected Assert();
public static void AreEqual(decimal expected, decimal actual);
public static void AreEqual(int expected, int actual);
public static void AreEqual(object expected, object actual);
public static void AreEqual(uint expected, uint actual);
public static void AreEqual(decimal expected, decimal actual, string message);
public static void AreEqual(double expected, double actual, double delta);
public static void AreEqual(int expected, int actual, string message);
public static void AreEqual(object expected, object actual, string message);
public static void AreEqual(float expected, float actual, float delta);
public static void AreEqual(uint expected, uint actual, string message);
public static void AreEqual(decimal expected, decimal actual, string message, params object[] args);
public static void AreEqual(double expected, double actual, double delta, string message);
public static void AreEqual(int expected, int actual, string message, params object[] args);
public static void AreEqual(object expected, object actual, string message, params object[] args);
public static void AreEqual(float expected, float actual, float delta, string message);
public static void AreEqual(uint expected, uint actual, string message, params object[] args);
public static void AreEqual(double expected, double actual, double delta, string message, params object[] args);
public static void AreEqual(float expected, float actual, float delta, string message, params object[] args);
public static void AreNotEqual(decimal expected, decimal actual);
public static void AreNotEqual(double expected, double actual);
public static void AreNotEqual(int expected, int actual);
public static void AreNotEqual(object expected, object actual);
public static void AreNotEqual(float expected, float actual);
public static void AreNotEqual(uint expected, uint actual);
public static void AreNotEqual(decimal expected, decimal actual, string message);
public static void AreNotEqual(double expected, double actual, string message);
public static void AreNotEqual(int expected, int actual, string message);
public static void AreNotEqual(object expected, object actual, string message);
public static void AreNotEqual(float expected, float actual, string message);
public static void AreNotEqual(uint expected, uint actual, string message);
public static void AreNotEqual(decimal expected, decimal actual, string message, params object[] args);
public static void AreNotEqual(double expected, double actual, string message, params object[] args);
public static void AreNotEqual(int expected, int actual, string message, params object[] args);
public static void AreNotEqual(object expected, object actual, string message, params object[] args);
public static void AreNotEqual(float expected, float actual, string message, params object[] args);
public static void AreNotEqual(uint expected, uint actual, string message, params object[] args);
public static void AreNotSame(object expected, object actual);
public static void AreNotSame(object expected, object actual, string message);
public static void AreNotSame(object expected, object actual, string message, params object[] args);
public static void AreSame(object expected, object actual);
public static void AreSame(object expected, object actual, string message);
public static void AreSame(object expected, object actual, string message, params object[] args);
public static void Contains(object expected, IList actual);
public static void Contains(object expected, IList actual, string message);
public static void Contains(object expected, IList actual, string message, params object[] args);
public static void DoAssert(IAsserter asserter);
[EditorBrowsable(EditorBrowsableState.Never)]
public static bool Equals(object a, object b);
public static void Fail();
public static void Fail(string message);
public static void Fail(string message, params object[] args);
public static void Greater(decimal arg1, decimal arg2);
public static void Greater(double arg1, double arg2);
public static void Greater(IComparable arg1, IComparable arg2);
public static void Greater(int arg1, int arg2);
public static void Greater(float arg1, float arg2);
public static void Greater(uint arg1, uint arg2);
public static void Greater(decimal arg1, decimal arg2, string message);
public static void Greater(double arg1, double arg2, string message);
public static void Greater(IComparable arg1, IComparable arg2, string message);
public static void Greater(int arg1, int arg2, string message);
public static void Greater(float arg1, float arg2, string message);
public static void Greater(uint arg1, uint arg2, string message);
public static void Greater(decimal arg1, decimal arg2, string message, params object[] args);
public static void Greater(double arg1, double arg2, string message, params object[] args);
public static void Greater(IComparable arg1, IComparable arg2, string message, params object[] args);
public static void Greater(int arg1, int arg2, string message, params object[] args);
public static void Greater(float arg1, float arg2, string message, params object[] args);
public static void Greater(uint arg1, uint arg2, string message, params object[] args);
public static void Ignore();
public static void Ignore(string message);
public static void Ignore(string message, params object[] args);
private static void IncrementAssertCount();
public static void IsAssignableFrom(Type expected, object actual);
public static void IsAssignableFrom(Type expected, object actual, string message);
public static void IsAssignableFrom(Type expected, object actual, string message, params object[] args);
public static void IsEmpty(ICollection collection);
public static void IsEmpty(string aString);
public static void IsEmpty(ICollection collection, string message);
public static void IsEmpty(string aString, string message);
public static void IsEmpty(ICollection collection, string message, params object[] args);
public static void IsEmpty(string aString, string message, params object[] args);
public static void IsFalse(bool condition);
public static void IsFalse(bool condition, string message);
public static void IsFalse(bool condition, string message, params object[] args);
public static void IsInstanceOfType(Type expected, object actual);
public static void IsInstanceOfType(Type expected, object actual, string message);
public static void IsInstanceOfType(Type expected, object actual, string message, params object[] args);
public static void IsNaN(double aDouble);
public static void IsNaN(double aDouble, string message);
public static void IsNaN(double aDouble, string message, params object[] args);
public static void IsNotAssignableFrom(Type expected, object actual);
public static void IsNotAssignableFrom(Type expected, object actual, string message);
public static void IsNotAssignableFrom(Type expected, object actual, string message, params object[] args);
public static void IsNotEmpty(ICollection collection);
public static void IsNotEmpty(string aString);
public static void IsNotEmpty(ICollection collection, string message);
public static void IsNotEmpty(string aString, string message);
public static void IsNotEmpty(ICollection collection, string message, params object[] args);
public static void IsNotEmpty(string aString, string message, params object[] args);
public static void IsNotInstanceOfType(Type expected, object actual);
public static void IsNotInstanceOfType(Type expected, object actual, string message);
public static void IsNotInstanceOfType(Type expected, object actual, string message, params object[] args);
public static void IsNotNull(object anObject);
public static void IsNotNull(object anObject, string message);
public static void IsNotNull(object anObject, string message, params object[] args);
public static void IsNull(object anObject);
public static void IsNull(object anObject, string message);
public static void IsNull(object anObject, string message, params object[] args);
public static void IsTrue(bool condition);
public static void IsTrue(bool condition, string message);
public static void IsTrue(bool condition, string message, params object[] args);
public static void Less(decimal arg1, decimal arg2);
public static void Less(double arg1, double arg2);
public static void Less(IComparable arg1, IComparable arg2);
public static void Less(int arg1, int arg2);
public static void Less(float arg1, float arg2);
public static void Less(uint arg1, uint arg2);
public static void Less(decimal arg1, decimal arg2, string message);
public static void Less(double arg1, double arg2, string message);
public static void Less(IComparable arg1, IComparable arg2, string message);
public static void Less(int arg1, int arg2, string message);
public static void Less(float arg1, float arg2, string message);
public static void Less(uint arg1, uint arg2, string message);
public static void Less(decimal arg1, decimal arg2, string message, params object[] args);
public static void Less(double arg1, double arg2, string message, params object[] args);
public static void Less(IComparable arg1, IComparable arg2, string message, params object[] args);
public static void Less(int arg1, int arg2, string message, params object[] args);
public static void Less(float arg1, float arg2, string message, params object[] args);
public static void Less(uint arg1, uint arg2, string message, params object[] args);
public static void ReferenceEquals(object a, object b);
// Properties
public static int Counter { get; }
// Fields
private static int counter;
}
4. 其他一些核心概念:
a) SetUp Attribute
i. SetUp 可以实现,每一个Test 方法启动时调用,进行初始化工作.
ii. 这个方法必须是public 的.
b) TearDown Attribute
i. 对资源在执行[Test]后,进行消除.
c) ExpectedException Attribut
i. 捕捉在程序中的不可避免和预见的异常是否发生.
ii. 和[Test]一起使用,多用测试边界条件(Boundary Conditions)
iii. Example:
[Test]
2 [ExpectedException(typeof(DivideByZeroException))]
3 public void DivideByZero()
4{
5 int zero = 0;
6 int infinity = a/zero;
7 Assert.Fail("Should have gotten an exception");
8}

d) Ignore Attribute
i. 由于多种原因,可能要停止某个测试,但又不想破坏以写的测试,这时用它可以暂不测试这个方法.
ii. 和[Test]或者[Test Fixture]一起使用,当和[TestFixture]一起时,整个类的所有[Test]方法都将暂不测试.
e) Test Fixture SetUp/TearDown Attribute
i. 这组属性类似于前面的SetUp/TearDown,只是级别不同.这组属性,它们是在TestFixture级别的,所以它们的启动是在TestFixture中方法测试之前SetUp和整个TestFixeture测试完成后TearDown的.
ii. 理解这个顺序和输出次数就明白了:
[TestFixture] 
public class NumersFixture 
{
private int a ;
private int b ;

[TestFixtureSetUp]
public void firstInit()
{
Console.Write("fistinit");
}
[SetUp]
public void init()
{
Console.Write("setup\n");
a = 3 ;
b = 4 ;
}

[Test] 
public void AddTwoNumbers() 

{ 

Console.Write("do after set up1");
int sum=a+b; 
Assert.AreEqual(sum,3); 
} 

[Test] 
public void MultiplyTwoNumbers() 
{ 
Console.Write("do after set up2");
int product = a * b; 
Assert.AreEqual(2, product); 
} 
[TearDown]
public void clear()
{
Console.Write("Clear up the rubbish ");
a = b = 0;
}
[TestFixtureTearDown]
public void LastStep()
{
Console.Write("Last Step");
} 

}

f)Test Suite:没有搞懂!
g)Category属性:
把一些测试进行分类,用GUI很容易操作的.
posted on 2006-04-10 20:34 flyingchen 阅读(382) 评论(1) 收藏 举报


浙公网安备 33010602011771号