可以在主 java 代码上放置测试替身实现吗
Is it ok to place test double implementations on the main java code
关于 test doubles 在测试包含原始库 jar 作为依赖项的代码时,是否可以将它们放在主代码中以便可以使用它们?
有一些代码可以帮助我对我实现的库进行单元测试(测试替身)。是否可以将此代码保留在 jar 中,以便它可以被使用该库作为依赖项的代码使用。
简短的回答是否定的。
正如您所指的 Java 我可能会指出 Maven 依赖项和 Gradle 配置。它们将您的主要代码与纯粹用于测试目的的代码之间的依赖关系分开。它们的存在是有原因的。您可以使用生产就绪库进行测试,但不得将测试替身部署到生产系统。
我相信你的测试替身符合你的风格指南并且自己测试过。但是安全要求呢?你真的确定你不会用这些测试替身将漏洞引入你的系统吗?在计划渗透测试时,您真的要考虑系统中这些不必要的部分吗?或者更糟的是,你想解释你的渗透测试专家是否考虑他们?
如果您开发了可重用的测试组件,那么您就做了一些有用的事情。但是您必须将它们隔离在单独的库中。它们是特殊用途测试框架的一部分。像对待 JUnit 一样对待它们。
关于 test doubles 在测试包含原始库 jar 作为依赖项的代码时,是否可以将它们放在主代码中以便可以使用它们?
有一些代码可以帮助我对我实现的库进行单元测试(测试替身)。是否可以将此代码保留在 jar 中,以便它可以被使用该库作为依赖项的代码使用。
简短的回答是否定的。
正如您所指的 Java 我可能会指出 Maven 依赖项和 Gradle 配置。它们将您的主要代码与纯粹用于测试目的的代码之间的依赖关系分开。它们的存在是有原因的。您可以使用生产就绪库进行测试,但不得将测试替身部署到生产系统。
我相信你的测试替身符合你的风格指南并且自己测试过。但是安全要求呢?你真的确定你不会用这些测试替身将漏洞引入你的系统吗?在计划渗透测试时,您真的要考虑系统中这些不必要的部分吗?或者更糟的是,你想解释你的渗透测试专家是否考虑他们?
如果您开发了可重用的测试组件,那么您就做了一些有用的事情。但是您必须将它们隔离在单独的库中。它们是特殊用途测试框架的一部分。像对待 JUnit 一样对待它们。