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