自从被介绍给TDD以来,我已经思考了一段时间。
哪种方法是构建“Hello World”应用程序的最佳方法?使用“测试驱动开发”将在控制台上打印“Hello World”。
我的测试会是什么样?和什么类?
请求:我对TDD并不熟悉,它没有TDD是什么类似Wikipedia的链接。只是好奇如何解决这个问题。
最佳答案
您需要将控制台隐藏在界面后面。 (无论如何,这都可以被认为是有用的)
编写测试
[TestMethod]
public void HelloWorld_WritesHelloWorldToConsole()
{
// Arrange
IConsole consoleMock = MockRepository.CreateMock<IConsole>();
// primitive injection of the console
Program.Console = consoleMock;
// Act
Program.HelloWorld();
// Assert
consoleMock.AssertWasCalled(x => x.WriteLine("Hello World"));
}
编写程序
public static class Program
{
public static IConsole Console { get; set; }
// method that does the "logic"
public static void HelloWorld()
{
Console.WriteLine("Hello World");
}
// setup real environment
public static void Main()
{
Console = new RealConsoleImplementation();
HelloWorld();
}
}
将重构为更有用的东西;-)