Anda di halaman 1dari 42

NUNIT

Navaneeth Rajkumar
Open Source Tools Team
Project Central.Net
Something about
nUnit…

 NUnit is a unit-testing framework


for all .Net languages.
 It has been written entirely in C#.
Important nUnit Links

 http://www.nunit.org
 http://nunit.org/download.html
 http://sourceforge.net/projects/nunit/
The Input & Output of
nUnit

Dll, exe file XML file


nUnit (Optional)

Processing details
on the GUI or
Command prompt
The 2 operational modes

 GUI mode
 Console mode (Project Central.
net)
Things to do before testing
 Download Nunit-2.2.0.msi from
http://nunit.org/download.html and
install nunit.
Things to do before testing
cont….
 Add nunit.frameworks.dll to your
project references. This dll resides
in nunit\bin folder.
 The next few screen shots show
how to add this dll file if your
project has been opened as a
classlibrary.
Select the Solution
explorer mode
Right click references and
select Add reference
Select Browse
Goto the nunit\bin directory, choose
nunit.framework.dll and press open.
Now press ok in the Add
reference page
The dll has been added to
your reference list.
In your code, add using
nunit.framework.
Add testfixture to your
program
TestFixture Example
[TestFixture]
public class calcTest{
[Test]
public void AdditionTests(){
calculator cal=new calculator();
cal.Addition(5,10); //CASE 1
Assert.AreEqual(15,cal.output());

cal.Addition(-5,10); // CASE 2
Assert.AreEqual(15,cal.output());
}

[Test]
public void DivisionTests(){
calculator cal=new calculator();
cal.Division(10,2); // CASE 1
Assert.AreEqual(5,cal.output());

cal.Division(10,0); //CASE 2
Assert.AreEqual(2,cal.output());
}
}//for testfixture
How to write your test
code
 Suppose you want to test the functions in
a class, your testfixture(test stub) should
look somewhat like this
using NUnit.Framework;
Namespace sample1{
public class sampleclass(){
public void func1(){}
}//for sampleclass

[TestFixture]
public class sampleTest(){
[Test]
public void test1(){
testcase1;
testcase2;
}//for test1()
}//for sampleTest textfixture
}//for namespace
Calculator Example
using System;
using NUnit.Framework;

namespace ClassLibrary1
{
public class calculator
{
private int result;

public void Addition(int num1,int num2){


result=num1+num2;
}

public int output(){


return result;
}

public void Division(int num1,int num2){


if(num2==0){
throw new DivideByZeroException();
}
result = num1/num2;
}
}
Calculator Example cont…
[TestFixture]
public class calcTest
{
[Test]
public void AdditionTests(){
calculator cal=new calculator();
cal.Addition(5,10);Console.Write("TESTING 5+10\n");
Assert.AreEqual(15,cal.output());

cal.Addition(-5,10);Console.Write("TESTING -5+10\n");
Assert.AreEqual(5,cal.output());
}

[Test]
public void DivisionTests(){
calculator cal=new calculator();
cal.Division(10,2); Console.Write("TESTING 10div2\n");
Assert.AreEqual(5,cal.output());

cal.Division(10,0); Console.Write("TESTING 10div0\n");


Assert.AreEqual(0,cal.output());
}
}//for testfixture
}//for namespace
Build the Project
 After the testfixture is complete,
build the project. This will create a
dll file which will reside in
projectname\bin\debug folder.
LOCATION of dll
 In this example I am copying the
dll file from projectname\bin\debug
folder to nunit\bin folder for my
convenience.
 But this is not a requirement when
we are testing and the dll can be
run from projectname\bin\debug
folder.
Location of exe files
Starting the GUI from
console
The GUI can be started from the console
by executing
nunit-gui.exe [inputfilename][options]
Ex: nunit-gui.exe nunit.tests.dll –run
This option will load the dll file and

run the test.


* Options with their values are separated
by an equal, colon or a space.
Starting the GUI from
console
 nunit-gui.exe [inputfilename][options]
Options:
/help short format: /?
/config=STR project config to load
/noload suppress loading of last proj
/run Automatically run after load
/fixture=STR Fixture to test
GUI MODE
 The steps to be followed are
 Load the Dll file.
 Select Run.
 View the errors if any on the GUI
screen.
 Save the output XML if necessary.
Select open in the NUNIT
GUI
Select the dll which you want to
test(In this case, we have moved the
dll to the nunit\bin folder)
Runs Perfectly
Tests Fail
To save the output in an
XML file
Writing in the output file
 In the GUI mode, the user must
specify that he/she wants to save
the output. No xml output file is
automatically created on the users
behalf.
 But in Console mode, a XML file is
created even if not specified by the
user.
Console mode
 The command to execute the exe in
console mode is
nunit-console.exe [filename] [option]

Example:
nunit-console.exe classlibrary1.dll
-XML=ourfile.xml
The different options are
Nunit-console [inputfiles][options]
Options

/Fixture=STR Fixture to test


/config=STR project configuration to load
/XML=STR Name of XML output file
/transform=STR name of transform file
/xmlConsole display XML to the console
/output=STR File to receive test output (short :/out=STR)
/err=STR File to receive test error output
/labels Label each test in stdout
/include = STR list of categories to include
/exclude = STR list of categories to exclude
/noshadow disable shadow option
/thread runs thread on a separate thread
/wait wait for input before closing console window
/nologo Do not display the logo
/help Display help (short format: /?)
Runs Perfectly
Test Fails
Output file
 As mentioned earlier, in console
mode the xml file is automatically
created as testresult.xml in the
nunit\bin folder.
 The user can change the name of
the output file by saying -XML =
newfilename.xml as shown in the
previous slide.
Now lets Examine the
Output file (test passed)
Test Failed
Failure message(1
message)
Test Failure(2 tests)
Proposed Architecture
 The architecture which has been
proposed by the architect is
 The user shall run his tests in the
console mode of the nUnit tool after
the dll has been created by the nAnt
tool.
 The output XML file shall be sent to the
User Interface to accommodate
information about the user, date, time
and other related information.
NUNIT

Thank you