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 框架。