I like the BDD style test structure.
GivenAnObject
WhenIPerformAnAction
ThenIGetTheseResults
In C# this translates nicely to a namespace structure:
namespace GivenAnObject
{
[TestFixture]
class WhenIPerformAnAction
{
private MyObject result;
[SetUp]
public void GivenAnObject()
{
// CreateMyObject();
WhenIPerformAnActionWhen();
}
public void WhenIPerformAnActionWhen()
{
result = MyObject.ExecuteAction();
}
[Test]
public void ThenIGetAResult()
{
Assert.AreEqual(ExpectedResult, result);
}
}
}
When run in nunit tests that follow this paradigm will display very nicely as a well grouped set of tests which are testing the behaviour of the various parts of your program.
In your case these tests would be:
GivenADoor
WhenTheDoorStartsWithV
ThenTheDoorIsVirtual
GivenADoor
WhenTheDoorDoesNotStartWithV
ThenTheDoorIsNotVirtual