NUnitLite Version 0.9 - May 5, 2013

NUnitLite is a small-footprint implementation of much of the current NUnit framework. It is distributed in source form and is intended for use in situations where NUnit is too large or complex. In particular, it targets mobile and embedded environments as well as testing of applications that require "embedding" the framework in another piece of software, as when testing plugin architectures.

This file provides basic information about NUnitLite. For more info see the NUnitLite web site at http://nunitlite.com.

COPYRIGHT AND LICENSE

NUnitLite is Copyright © 2013, Charlie Poole and is licensed under the MIT license.

A copy of the license is distributed with the program in the file LICENSE.txt and is also available at http://www.opensource.org/licenses/mit-license.php.

NUNitLite is based on ideas in NUnit, but not on the NUnit implementation. In addition, some code developed in NUnitLite was subsequently contributed to the NUnit project, where it is available under the NUnit license. Subsequently, some (but not all) of the newer NUnit features were ported back to NUnitLite.

ATTRIBUTES

NUnitLite supports most of the same attributes as NUnit 2.6.
	CategoryAttribute
	CombinatorialAttribute
	CultureAttribute
	DatapointAttribute
	DatapointsAttribute
	DescriptionAttribute
	ExpectedExceptionAttribute
	ExplicitAttribute
	IgnoreAttribute
	MaxTimeAttribute
	PairwiseAttribute
	PlatformAttribute
	PropertyAttribute
	RandomAttribute
	RangeAttribute
	SequentialAttribute
	SetCultureAttribute
	SetUICultureAttribute
	SetUpAttribute
	TearDownAttribute
	TestAttribute
	TestCaseAttribute
	TestCaseSourceAttribute
	TestFixtureAttribute
	TestFixtureSetUpAttribute
	TestFixtureTearDownAttribute
	TheoryAttribute
	TimeoutAttribute
	ValuesAttribute
	ValueSourceAttribute

ASSERTS

The programmer expresses expected test conditions using the Assert class. The existing functionality of most current NUnit Assert methods is supported, but the syntax has been changed to use the more extensible constraint-based format. The following methods are supported:
	Assert.Pass
	Assert.Fail
	Assert.Ignore
	Assert.Inconclusive
	Assert.That
	Assert.ByVal
	Assert.Throws
	Assert.DoesNotThrow
	Assert.Catch
	Assert.Null
	Assert.NotNull
	Assert.True
	Assert.False
	Assert.AreEqual
	Assert.AreNotEqual
	Assert.AreSame
	Assert.AreNotSame

ASSUMPTIONS

The programmer may express assumptions in the test using Assume.That() A failure in Assume.That causes an Inconclusive result.

CONSTRAINTS

NUnitLite supports most of the same built-in constraints as NUnit. Users may also derive custom constraints from the abstract Constraint class. The following built-in constraints are provided:
	AllItemsConstraint
	AndConstraint
	AssignableFromConstraint
	AssignableToConstraint
	AttributeConstraint
	AttributeExistsConstraint
	BinarySerializableConstraint (not available on compact framework)
	CollectionContainsConstraint
	CollectionEquivalentConstraint
	CollectionOrderedConstraint
	CollectionSubsetConstraint
	ContainsConstraint
	DelayedConstraint
	EmptyCollectionConstraint
	EmptyConstraint
	EmptyDirectoryConstraint
	EmptyStringConstraint
	EndsWithConstraint
	EqualConstraint
	ExactCountConstraint
	ExactTypeConstraint
	ExceptionTypeConstraint
	FalseConstraint
	GreaterThanConstraint
	GreaterThanOrEqualConstraint
	InstanceOfTypeConstraint
	LessThanConstraint
	LessThanOrEqualConstraint
	NaNConstraint
	NoItemConstraint
	NotConstraint
	NullConstraint
	NullOrEmptyStringConstraint
	OrConstraint
	PredicateConstraint
	PropertyConstraint
	PropertyExistsConstraint
	RangeConstraint
	RegexConstraint (not available on compact framework)
	ReusableConstraint
	SameAsConstraint
	SamePathConstraint
	SamePathOrUnderConstraint
	SomeItemsConstraint
	StartsWithConstraint
	SubstringConstraint
	ThrowsConstraint
	ThrowsNothingConstraint
	TrueConstraint
	UniqueItemsConstraint
	XmlSerializableConstraint (not available on compact framework 1.0)

Although constraints may be created using their constructors, the more usual approach is to make use of one or more of the NUnitLite SyntaxHelpers. The following helpers are provided: 

  Is: Not, All, Null, True, False, NaN, Empty, Unique, EqualTo, SameAs,
      GreaterThan, GreaterThanOrEqualTo, LessThan, LessThanOrEqualTo,
      AtLeast, AtMost, TypeOf, InstanceOf, InstanceOfType, AssignableFrom,
      AssignableTo, StringContaining, StringStarting, StringEnding, 
      StringMatching, EquivalentTo, SubsetOf, BinarySerializable, XmlSerializable, 
      Ordered, SamePath, SamePathOrUnder, InRange

  Contains: Substring, Item

  Has: No, All, Some, None,Property, Length, Count, Message, Member, Attribute

Tests are loaded as a list of fixtures, without any additional hierarchy. Each fixture contains it's tests. Tests are executed in the order found, without any guarantees of ordering. A separate instance of the fixture object is created for each test case executed by NUnitLite. The embedded console runner produces a summary of tests run and lists any errors or failures.

USAGE

NUnitLite is not "installed" in your system. Instead, you should include nunitlite.dll in your project. Your test assembly should be an exe file and should reference the nunitlite assembly. If you place a call like this in your Main
    new TextUI().Execute(args);
then NUnitLite will run all the tests in the test project, using the args provided. Use -help to see the available options.

DOCUMENTATION

NUnitLite uses the NUnit.Framework namespace, which allows relatively easy portability between NUnit and NUnitLite. Currently, there is no separate set of documentation for NUnitLite so you should use the docs for NUnit 2.6 or later in conjunction with the information in this file.

