When writing unit tests I like to make an outline of the intended tests. Actively thinking and writing the structure of a test suite allows me to focus on what I want to test. Writing the actual tests just becomes work.
There is a lot of debate on how to write your test method names. My patterns allow me to locate the test in question quickly.
- All test classes should be in the same namespace as the class under test. I admit this is a hold over from my Java days and not sure it is needed anymore.
- Test class name is the name of the class under test with the word *Tests* appended.
I use the following snippet of code in all of my test projects. It is the first thing that add to my unit test files. I could make a template for this but having it available on the web is easier for me.
namespace NSName;
public class ClassNameTests
{
/*
[Fact]
public void Method_Scenario_Expectation()
{
// Arrange
// Act
// Assert
}
*/
}
The only aspect of the template that I do not appreciate is that my method names are not renamed when refactoring. I will be looking into using nested classes to limit the amount of refactoring. The template would then resemble this more.
namespace NSName;
public class ClassNameTests
{
public class MethodNameTests
{
[Fact]
public void Scenario_Expectation()
{
// Arrange
// Act
// Assert
}
*/
}
}