Running NUnit on the command line
Run a text fixture using the GUI:
"C:\Program Files\NUnit 2.2\bin\nunit-gui.exe" /fixture:sometests.test.mytest /run
Run a text fixture using the Console:
"C:\Program Files\NUnit 2.2\bin\nunit-console.exe" C:\src\ssg\SrcUnitTests\bin\Debug\NUnitTests.dll /fixture :sometests.test.mytest /out:TestResult.txt /exclude:Manual /thread
This will exclude all tests or test fixtures marked as [Category("Manual")], output goes to Results.txt and /thread causes a separate thread to be created for running the tests.
Description of the NUnit test class attributes can be found here
Here is a NUnit skeleton class with the main attributes:
Run a text fixture using the GUI:
"C:\Program Files\NUnit 2.2\bin\nunit-gui.exe" /fixture:sometests.test.mytest /run
Run a text fixture using the Console:
"C:\Program Files\NUnit 2.2\bin\nunit-console.exe" C:\src\ssg\SrcUnitTests\bin\Debug\NUnitTests.dll /fixture :sometests.test.mytest /out:TestResult.txt /exclude:Manual /thread
This will exclude all tests or test fixtures marked as [Category("Manual")], output goes to Results.txt and /thread causes a separate thread to be created for running the tests.
Description of the NUnit test class attributes can be found here
Here is a NUnit skeleton class with the main attributes:
using NUnit.Framework;
[TestFixture]
public class SomeTester
{
#region Setup/TearDown
// This is invoked before each [TestFixture]
// ie once only, before any tests are invoked
[OneTimeSetUp]
public void OneTimeSetUp()
{
}
// This is invoked after each [TestFixture]
// ie once only, after all tests have been invoked
[OneTimeTearDown]
public void OneTimeTearDown()
{
}
// This is invoked before each [Test}
[SetUp]
public void Setup()
{
}
// This is invoked after each [Test}
[TearDown]
public void TearDown()
{
}
#endregion Setup/TearDown
// Format of a Test method, Try to put all the setup for the test in the test.
// If necessary add private Setup/Initialise/Teardown methods to assist this
// rather than using the one listed above
[Test]
public void SomeTest()
{
}
// You can add test parameters to a test and use it to test multiple cases
[Test]
[TestCase(5.0d, 0.0d, 3.0d)]
[TestCase(5.0d, 1.0d, 3.0d)]
[TestCase(5.0d, 0.0d, 5.0d)]
public void SomeTest(double fullLengthSecs, double startTimeSecs, int expectedValue)
{
}
}
Use these logging lines to generically log the beginning and end of a test using reflection
[Test]
public void SomeTest()
{
log.Info("*** Beginning Test - " + System.Reflection.
MethodBase.GetCurrentMethod().ToString());
log.Info("*** Ending Test - " + System.Reflection.
MethodBase.GetCurrentMethod().ToString());
}
alternatively use:
//Output test class and method name:
Debug.WriteLine("*** Beginning Test - " +
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString()
+ "." +
System.Reflection.MethodBase.GetCurrentMethod().Name.ToString());
NUnit Exceptions
Use the 'ExpectedException' attribute when the test is expected to result in an exception being thrown.
[Test]
[ExpectedException(typeof(System.Net.Sockets.SocketException))]
public void TestNoServer()
{
...
alternatively use can use the Assert.Throws() method:
Assert.Throws(typeof(System.Net.Sockets.SocketException),
delegate
{
SomeMethodThatShouldThrowAnException();
});
No comments:
Post a Comment