为什么我们要在src文件夹里多写一个也可以运行测试的编程语言测试文件夹?

Why do we write an extra test folder for programming languages that can also run tests in the src folder?

我想知道为什么在许多也与测试有关的打字稿教程中总是创建一个额外的测试文件夹?

直接在 class 旁边编写测试不是更容易吗?像这样: (并非每种语言都可能,但我的意思是此示例仅适用于可能的语言。例如打字稿)

src/folder/
 Class.*
 Class.test.*

对于大项目来说更容易,因为您不必在 IDE 中向下滚动那么远就可以进行测试,而是将其放在旁边。

但我经常看到测试文件夹总是像这样额外创建的:

src/folder/
 Class.*
test/folder/
 Class.test.*

(最后大家可以自己决定自己的project怎么设计,我就是想不通)

如果可能,请写下您是如何组织测试的,您是否对测试组织感到满意,以及您是否能够自己决定如何组织测试。

保持测试和生产分开允许您单独编译和部署它们,等等。您真的不想将生产代码与测试代码混合在一起。 能够单独编译生产代码可确保它不依赖于任何测试代码。 能够单独部署您的生产代码是必不可少的;测试代码仅用于测试,出于多种原因不应在生产中使用。例如:测试代码调用内部api。部署此测试代码,公开内部 api.

您不应将测试代码部署到生产环境。

当您将测试代码放在单独的目录中时,您可以轻松地将 if 与生产代码分开。这使您能够仅部署生产代码。

为什么不部署测试代码?

  • 它增加了整个软件的大小。
  • 它增加了软件的表面积 (API),这意味着未来的维护开销更高(参见 Hyrum's law)。
  • 它增加了整个软件的攻击面。

也许可以通过其他方式(例如条件编译)解决这些问题,但使用单独的目录是一种简单实用的解决方案。