MakeSut 概念
Testcode 具有與生產程式碼相同的質量要求。MakeSut()
- 提高可讀性
- 可以很容易地重構
- 完美支援依賴注入。
這是概念:
[Test]
public void TestSomething()
{
var sut = MakeSut();
string result = sut.Do();
Assert.AreEqual("expected result", result);
}
最簡單的 MakeSut()
只返回測試類:
private ClassUnderTest MakeSUT()
{
return new ClassUnderTest();
}
當需要依賴項時,可以在此處注入:
private ScriptHandler MakeSut(ICompiler compiler = null, ILogger logger = null, string scriptName="", string[] args = null)
{
//default dependencies can be created here
logger = logger ?? MockRepository.GenerateStub<ILogger>();
...
}
有人可能會說,MakeSut 只是 Testrunner 框架提供的設定和拆卸方法的一個簡單替代方案,可能會使這些方法成為測試特定設定和拆卸的更好地方。
每個人都可以自己決定使用哪種方式。對我來說,MakeSut()
提供了更好的可讀性和更大的靈活性。最後但並非最不重要的是,該概念獨立於任何 testrunner 框架。