我们有类似的东西
public abstract class ContextSpecification
{
[FixtureSetUp]
public void SetUp()
{
EstablishContext();
Act();
}
protected abstract void Act();
protected abstract void EstablishContext();
[FixtureTearDown]
public void TidyUpCore()
{
TidyUp();
}
protected virtual void TidyUp()
{
}
}
然后,对于每组类似的测试,我们创建一个基本上下文,如下所示:
internal class TestClassTests
{
internal abstract class BaseContext : ContextSpecification
{
protected TestClass _sut;
protected override void Act()
{
}
protected override void EstablishContext()
{
_sut = new TestClass ();
// common wiring
}
}
internal class Given_this_situation : BaseContext
{
protected override void EstablishContext()
{
base.EstablishContext();
// test specific wiring
}
protected override void Act()
{
// carry out the test actions
}
[UnitTest]
public void ThisShouldBeTrue()
{
Assert.IsTrue();
}
}
}