“Hello World”——TDD 方式?

2023-12-27

自从我接触 TDD 以来,我一直在思考这个问题。 构建“Hello World”应用程序的最佳方法是什么?这将在控制台上打印“Hello World” - 使用测试驱动开发。

我的测试会是什么样子?以及大约什么班?

Request: No "类似维基百科" 链接到什么是 TDD,我很熟悉 TDD。只是好奇如何解决这个问题。


您需要将控制台隐藏在界面后面。 (无论如何,这可以认为是有用的)

写一个测试

[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();
  }
}

Refactor做一些更有用的事情;-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“Hello World”——TDD 方式? 的相关文章

随机推荐

  • Android 自动滚动 EditText 提示

    使 edittext 可滚动的问题 https stackoverflow com questions 6250041 problem with making edittext scrollable 有人提到 当 singleLine tr
  • WIF手动生成federationmetadata.xml

    我正在使用 Windows Identity Foundation 并尝试创建基于 MVC NET 的安全令牌服务并将其用作单点登录应用程序 我唯一的问题是我不知道如何生成 federationmetadata xml 文件 有没有什么工具
  • 如何获取topLayoutGuide的高度?

    moviePlayer MPMoviePlayerController contentURL url moviePlayer view frame CGRect x 0 y layoutguide height width self vie
  • 针对外部 Web 服务的 ASP.NET MVC Forms 身份验证

    我正在尝试编写一个 ASP NET MVC 应用程序 它是具有 SOAP Web 服务的 CRM 的前端 我希望用户使用他们的 CRM 用户名和密码登录我的 Web 应用程序 然后针对 CRM 进行身份验证 在页面上进行 Web 服务调用等
  • Android Chrome 自定义选项卡回退

    我正在实施后备 chrome 自定义选项卡 我指的是几个链接它有一些 https stackoverflow com questions 34328814 android open chrome custom tab from fragme
  • 从 C# 通用字典中过滤出值

    我有一本 C 字典 Dictionary
  • 如何将 asyncio 与 boost.python 一起使用?

    可以用Python3吗asyncio封装有Boost Python图书馆 I have CPython C 构建的扩展Boost Python 以及编写的函数C 可以工作很长时间 我想用asyncio调用这些函数但是res await cp
  • 如何将 Func 与返回 IOrderedQueryable 的 IQueryable 结合使用

    我正在做一些关于 EF 的研究 发现了一个接受的函数 Func
  • 调用amazondax服务时出现权限异常

    我正在通过 AWS Lambda 方法使用 amazondax 服务 并收到指示缺少权限的异常 但我不知道为此需要哪些权限 Lambda 方法和我的 DAX 集群都使用相同的 VPC 子网和安全组进行设置 我收到以下异常 ERROR 201
  • 检测 Windows Phone 的方向

    我使用 JavaScript 事件 onorientationchange 和参数 window orientation 来检测网站上的方向变化和方向值 这适用于 iPhone 和 Android 但是 Windows Phone 不会触发
  • 如何通过单击菜单中的 Li 将 HTML 页面加载到 DIV 中?

    我遇到了一个非常烦人的问题 所以 我的计划是制作一个包含不同含量锂的 UL 菜单 当我单击它们中的每一个时 我想将一个新的 HTML 页面加载到我的 Content DIV 中 我做了很多研究 发现了 Ajax 和 Jquery 我尝试了很
  • 重置jquery分页插件中的总页数

    我正在使用 TwbsPagination 插件在我的应用程序中显示分页 当我们在初始化时设置页面大小时 它工作正常 但是 根据搜索结果 我想重置总页数 当我尝试使用 pagination twbsPagination totalPages
  • 这是在 Java 中比较两个文档的最佳方法,没有任何复杂性和精确的结果

    我有两个 word 文档 我想在 java 中比较它们 我尝试使用 md5 哈希码 HashCode newFile Files asByteSource newFileInput hash Hashing md5 HashCode old
  • 如何使用 javascript 设置文本框的值

    我试图从查询字符串中获取一个值并将该值分配到文本框中 我能够从查询字符串中获取值 但无法将其分配给文本框 document getElementByName Contact0Email Value email 尝试了上面的代码 但似乎不起作
  • 使用 JAXB 解组期间覆盖声明的编码

    我有一个 XML 文件 其中设置了编码 但实际上文件是用 UTF 8 编码的 使用 JAXB 解组 XML 文件时是否可以覆盖 XML 文件中声明的编码 您可以从 a 中解组内容java io Reader为了提供实际的编码 Unmarsh
  • 在C中,是否保证数组起始地址小于其他元素的地址?

    换句话说 当做 index array x array 0 是否总是保证 根据 C 标准 array 0 地址顺序是有保证的 关系运算符的行为定义在C11 6 5 8p5 http port70 net nsz c c11 n1570 ht
  • 分页逻辑怎么写?

    任何人都可以提供一些想法 逻辑来为我正在处理的搜索页面编写分页逻辑吗 我掌握的信息是总页数对于该搜索 每页10条记录我还收到了上一页和下一页的页码 编写逻辑没问题 我需要做的就是提取该信息并填充 我还获取我所在页面的信息 我只能显示 10
  • 导入com.google.android.gms.gcm.GoogleCloudMessaging无法解析[重复]

    这个问题在这里已经有答案了 我正在尝试在 Android 应用程序中使用通知 我发现了很多 tuto 但都使用了已弃用的 com google android gcm pakage 我发现我必须使用 com google android g
  • Apache - 处理 TCP 连接,但不处理 HTTP 请求

    我有一个 GPS 单元 可以通过 TCP 连接发送数据 但我无法修改它发送的消息 因此它会以 HTTP 请求的形式到达我的服务器 它只能发送消息以预定义的格式 所以 我有以下问题 1 是否可以让 Apache 处理不以 HTTP 请求形式出
  • “Hello World”——TDD 方式?

    自从我接触 TDD 以来 我一直在思考这个问题 构建 Hello World 应用程序的最佳方法是什么 这将在控制台上打印 Hello World 使用测试驱动开发 我的测试会是什么样子 以及大约什么班 Request No 类似维基百科