如果我有以下代碼:使用NUnit派生類中的SetUp?
[TestFixture]
public class MyBaseTest
{
protected ISessionManager _sessionManager;
[SetUp]
public void SetUp() { /* some code that initializes _sessionManager */ }
}
[TestFixture]
public class MyDerivedTest : MyBaseTest
{
IBlogRepository _repository;
[SetUp]
public void SetUp() { /* some code that initializes _repository */ }
[Test]
public void BlogRepository_TestGoesHere() { /* some tests */ }
}
... NUnit的不叫基本安裝例程。這是預料之中的,我自己也沒有問題。我可以得到導出的SetUp首先調用基本SetUp,如下所示:
[TestFixture]
public class MyDerivedTest : MyBaseTest
{
IBlogRepository _repository;
[SetUp]
public new void SetUp()
{
base.SetUp();
/* some code that initializes _repository */
}
這很難看。如果它是一個構造函數,我不需要。
我可以使用「模板法」的格局,並具備以下條件:
public void MyBaseTest
{
abstract void SetUp();
[SetUp]
public void BaseSetUp()
{
/* base initialization */
SetUp(); // virtual call
}
}
我不是特別喜歡這種方式,無論是。
當他們的測試類需要SetUp時,你會做什麼?它們是從另一個需要SetUp的類派生的?
我知道。我不想。 – 2009-02-14 12:00:44
部分方法呢?因爲SetUp裝飾有屬性,所以我不確定會有更多的方法來實現它。 – 2009-02-14 12:02:13
哦。沒有想到部分方法。有趣的方法。 – 2009-02-14 12:04:19