Language agnostic 如何在TDD中测试环境?

Language agnostic 如何在TDD中测试环境?,language-agnostic,tdd,Language Agnostic,Tdd,随着我继续学习和应用TDD,我达到了一些程度,在编写代码之前我不知道如何进行测试(我应该这样做)。 它适用于我的应用程序之外的任何内容,例如测试: 文件已更改(例如重命名) 程序已启动/终止/移动等 我如何测试这些东西 编辑: 我想重点介绍第一个示例,因为我正在开发一个实际需要这些测试的应用程序。如何测试文件的更改?考虑编写集成测试。与单元测试不同,单元测试测试逻辑的各个独立部分,集成测试的功能是确保所有部分都能正确地相互通信 您的集成测试将引用属性文件,启动和关闭您的服务,并通常确保您的移

随着我继续学习和应用TDD,我达到了一些程度,在编写代码之前我不知道如何进行测试(我应该这样做)。
它适用于我的应用程序之外的任何内容,例如测试:

  • 文件已更改(例如重命名)
  • 程序已启动/终止/移动等
我如何测试这些东西

编辑:

我想重点介绍第一个示例,因为我正在开发一个实际需要这些测试的应用程序。如何测试文件的更改?

考虑编写集成测试。与单元测试不同,单元测试测试逻辑的各个独立部分,集成测试的功能是确保所有部分都能正确地相互通信

您的集成测试将引用属性文件,启动和关闭您的服务,并通常确保您的移动部件没有损坏


有时,使用组件是明智的。毕竟,您并不是真正测试组件,而是测试组件运行的环境。

任何依赖于环境的测试都不是单元测试,而是集成测试。TDD不适用于这些


当然,您可以创建集成测试,并且您可以,或者当然,在编写测试代码之前编写这些测试。

您能再给我一些吗?术语集成测试对我来说是新的。我确实查过了,但我看不出它如何适合我的情况(因为我对文件系统/Windows进程模块几乎没有控制权)。单元测试测试一个小的功能单元,独立于该单元依赖的任何东西。集成测试测试两个或多个组件如何协同工作。例如,您的数据访问代码如何处理数据库。好的,那么您如何确保既可以写入数据库,又不修改它?这就是我的情况。我在“示例TDD”中了解到,我甚至不能编写该函数,甚至不能直接调用它,因为我需要先测试它。在一个简单的例子中(一个文件):如何创建一个新文件?你可以编写这样的测试,但通常不需要。这不是那种会坏的东西,也需要自动化。简单的手动测试将显示连接字符串是否正确。您不会测试是否可以创建文件。您可以通过将
TextWriter
传递给写入的方法来测试是否可以创建正确的内容。在测试中,您将使用
StringWriter
,并测试内容是否正确。不需要使用文件系统,这很有意义。所以在这种情况下,我应该只编写函数而不首先进行测试?我没有意识到这种异常的存在。“毕竟,你没有真正测试组件”——这正是我困惑的地方。如果我需要为文件的实际更改进行系统调用,我如何测试它?我不能直接调用它,因为我必须先测试它。我希望我的问题是清楚的。你不测试系统调用。它没有坏。测试调用系统调用的代码。你需要一种新的心态。