态度决定高度、企图决定版图、格局决定结局

导航

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 ,翻译为断言.它是一个类.有如下关键方法:

              AreEqualAreSameEquals FailIgnoreIsFalseIsNotNull 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");

                        }
                     

 

                  }


     fTest Suite:没有搞懂!

     gCategory属性:

     把一些测试进行分类,用GUI很容易操作的.

    

    

posted on 2006-04-10 20:34  flyingchen  阅读(382)  评论(1)    收藏  举报