abh*_*ash 14 c# tdd nunit unit-testing
自从我被介绍到TDD以来,我一直在思考这个问题.哪个是构建"Hello World"应用程序的最佳方式?这将在控制台上打印"Hello World" - 使用测试驱动开发.
我的测试会是什么样子?什么课程?
请求:没有" 维基百科 "链接到TDD是什么,我熟悉TDD.只是好奇如何解决这个问题.
Ste*_*ger 21
您需要在界面后面隐藏控制台.(无论如何,这可能被认为是有用的)
写一个测试
[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"));
}
Run Code Online (Sandbox Code Playgroud)
写程序
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();
}
}
Run Code Online (Sandbox Code Playgroud)
重构更有用的东西;-)
嗯......我没见过你好世界的TDD版本.但是,要看到一个类似于TDD和可管理性的简单问题,您可以查看Enterprise FizzBuzz(代码).至少这将使您能够看到在hello世界中可能实现的过度工程化水平.
演讲者视图?(模型似乎没有必要)
View将是一个将输出传递给控制台的类(简单的单行方法)
Presenter是调用view.ShowText("Hello World")的接口,您可以通过提供存根视图来测试它.
为了提高工作效率,我只想写该死的程序:)
单个测试应该足够(在伪代码中):
IView view = Stub<IView>();
Expect( view.ShowText("Hello World") );
Presenter p = new Presenter( view );
p.Show();
Assert.IsTrue( view.MethodsCalled );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6796 次 |
| 最近记录: |