dotgnu-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [DotGNU]pnetlib::csunit


From: Gopal.V
Subject: Re: [DotGNU]pnetlib::csunit
Date: Sat, 13 Apr 2002 10:00:35 +0530
User-agent: Mutt/1.2.5i

If memory serves me right, Sriram Karra wrote:
> document: a for-dummies' like howto on JUnit I wrote a little while

Done.... Not very descriptive , but IMO this will do.

So all the newbies start hacking up tests (like for all the Classes :)

Gopal.V
-- 
 The difference between insanity and genius is only measured by success
 //===<=>===\\
|| GNU RULEZ ||
 \\===<=>===//

13-04-2001

CSUnit For Dummies


This document is a brief introduction to CSunit, a Unit Testing framework for C# programs, written in C#.

About CSUnit

CSUnit is part of the DotGNU Portable.NET system that can be used to perform Unit Testing of C# programs. It has been designed with a minimum dependency on our C# library · Pnetlib , so that this can be used to test our library functionality.

What is Unit Testing?

A Unit Test is a simple piece of test code that tests one teeny-weeny bit of your program. A Unit Test does not test application level functionality. A Unit Testing tool is a framework that makes it Easy to write, maintain, execute, , collect & present results from, a number of unit tests.

What can I do with CSUnit

With CSUnit, we can do all of the above. CSUnit comes with a a command line interface as of now. We will be building support into a number of IDE's like SharpDevelop or the DotGNU Development Environment later.

Using CSUnit

Using the CSUnit testing framework will involve the following:

  • Writing tests
  • Executing the tests and collecting/viewing results.[TODO]

Writing tests

You should first write a class that extends CSUnit.TestCase like this:

>> TestFoo.cs
using CSUnit;
using System;

public class TestFoo : TestCase
{

	public TestFoo(String name) : base(name)
	{
	}
	
	protected override void Setup()
	{
		// do the initial setup -- most likely none :)
	}

	protected override void Cleanup()
	{
		// cleanup the mess this test makes
	}

	// we consider any function that starts with a Test or test as a
	// CSUnit test -- thank God for Reflection

	public void TestFeature()
	{
		
		Assert("I'm testing Foo.Feature()",Foo.Feature() == expected_value);

		// AssertEquals is especially good for testing String/Object retvals

		AssertEquals("Foo.Feature() should be \"1\" here","1",Foo.Feature());

		// OR be a bit more specific
		
		AssertEquals("Foo.Feature()==\"1\"","1",Foo.Feature());

		try
		{
			Foo a=null;
			Foo.Feature("foo");
			Fail("NullReferenceException not caught !");
			// it's obvious that I went a little overboard with the
			// error messages -- be a little less alarming :)
		}
		catch(NullReferenceException err)
		{
			//woooohooo caught it !.
		}
	}
}


Each unit test you write will be a method of this class, and should start with "Test" or "test"

Assert() is a function that is available via the TestCase class. The assert succeeds if the condition passed to it is true, and it fails otherwise. The AssertEquals() is a function that avoids the use of the == operator overloading for comparing Objects. When an assert fails, the CSUnit makes a note that the test has failed, and if a test routine returns without any error/failure, CSUnit makes a note that the test has succeeded.

Add as many unit tests as you like . Unlike the more famous JUnit, CSUnit does not support a GUI as of now -- but the really picky guys may contact me for a kewl hack on this issue.

What we have seen is the simplest way to write CSUnit tests. It is more than likely that testing non-trivial code will need non-trivial testing. I'll move into more detail later in a full fledged documentation effort for CSUnit. As well as the methods to run CSUnit tests.

CSUnit is a very simple tool that can be used to organize and easily execute a number of test cases, which can be built incrementally.This document did not cover all features of CSUnit but is only meant to be a first step into Unit testing using CSUnit.


Orginally for JUnit by Sriram Karra . Hacked for CSUnit by Gopal.V

This Document is Licensed under the GNU FDL.
(C) Southern Storm Inc 2002


reply via email to

[Prev in Thread] Current Thread [Next in Thread]