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