测试框架应该位于 Maven 构建的哪个位置 - src/test/java 或 src/main/java?
Where on a Maven build should a test framework reside - src/test/java or src/main/java?
我从本网站之前的回答了解到,对于 Maven 构建:
src/main/java
将部署到生产环境,而 src/test/java
不会。
src/main/java
包含主应用程序,而 src/test/java
将包含用于 test 主应用程序的代码
现在我的问题是,在编写测试框架时,哪种方法是better/worse:
- 测试框架本身将是主要应用程序 - 因此它将位于
src/main/java
?
- 测试框架将仅用于测试主应用程序 - 因此将位于
src/main/java
?
不知何故卡在了正确的可视化上 -
方法 1 似乎是正确的,因为测试框架将是构建的主要目的,因此它将成为主要应用程序。
但不知何故,我无法想象将测试框架部署到生产环境中。
方法2似乎是正确的,但是如果主要目的是编写测试框架那么src/main/java
里面会是什么?对于我的测试框架应用程序,它是空的还是不存在的?
对此的任何建议都会有所帮助。
一个有趣的问题。
就我个人而言,如果情况没有明确禁止我这样做,我会始终将测试框架与生产代码一起发布。为什么?
使用测试框架,您还可以包含“模拟”或“伪造”类,这将有助于简化和最小化单元测试,因为复杂结构的模拟往往会使单元测试膨胀乍一看,它的要点并不明显。
生产代码的用户如果作为 JAR 发送并作为依赖项加载,也可以使用带有 Mock 类 的测试框架进行测试。
测试框架是主应用程序之外的另一种实现,目的是提高应用程序和使用它作为依赖项的组件的可测试性。
总结:除非另有说明,否则默认情况下,我会将其与生产应用程序一起发布(如果您使用 Maven,则可以将其放在单独的模块中)即 src/main/java
这里是package/directorymaven项目最佳实践树,希望对你有所帮助:
src --- main ----
| |
|--- test |--- config
| |
\--- site |--- java
|
|--- scripts
|
|--- resources
因此,如果该应用程序是一个测试框架(据我了解),我认为您应该将其放在 src/main/java 中,其中所有主要 java代码是。
如果你写一个测试框架my-test-framework
,你把代码放到src/main/java
。当您在某些 JAR my-jar
中使用测试框架时,您将其声明为 test
作用域依赖项。然后代码将不会投入生产。
我认为你误入歧途
- src/main/java will be deployed to production whereas src/test/java will not be.
我会改写为
- src/main/java contains the code that consumers of the module will use (it is the purpose of your module)
- 如果您的模块是关于最终用户使用的东西,它将投入生产。
- 如果您的模块是测试框架,那么它不会投入生产(在部署到服务器或客户端机器上的意义上),但其他模块会使用它,因此测试框架应该在
src/main/java
(假设您将测试框架构建为单独的模块)
如果你需要现实生活中的例子,你不需要再看 JUnit
(传说中的测试框架)
- src/main/java 包含 JUnit 测试框架
- src/test/java 包含测试测试框架的代码
更喜欢与 TestNG
一起工作? TestNG 的代码位于子模块“核心”中,但即便如此:
- 核心/src/main/java包含TestNG测试框架
- core/src/test/java 包含测试测试框架的代码
我从本网站之前的回答了解到,对于 Maven 构建:
src/main/java
将部署到生产环境,而src/test/java
不会。src/main/java
包含主应用程序,而src/test/java
将包含用于 test 主应用程序的代码
现在我的问题是,在编写测试框架时,哪种方法是better/worse:
- 测试框架本身将是主要应用程序 - 因此它将位于
src/main/java
? - 测试框架将仅用于测试主应用程序 - 因此将位于
src/main/java
?
不知何故卡在了正确的可视化上 -
方法 1 似乎是正确的,因为测试框架将是构建的主要目的,因此它将成为主要应用程序。
但不知何故,我无法想象将测试框架部署到生产环境中。
方法2似乎是正确的,但是如果主要目的是编写测试框架那么
src/main/java
里面会是什么?对于我的测试框架应用程序,它是空的还是不存在的?
对此的任何建议都会有所帮助。
一个有趣的问题。
就我个人而言,如果情况没有明确禁止我这样做,我会始终将测试框架与生产代码一起发布。为什么?
使用测试框架,您还可以包含“模拟”或“伪造”类,这将有助于简化和最小化单元测试,因为复杂结构的模拟往往会使单元测试膨胀乍一看,它的要点并不明显。
生产代码的用户如果作为 JAR 发送并作为依赖项加载,也可以使用带有 Mock 类 的测试框架进行测试。
测试框架是主应用程序之外的另一种实现,目的是提高应用程序和使用它作为依赖项的组件的可测试性。
总结:除非另有说明,否则默认情况下,我会将其与生产应用程序一起发布(如果您使用 Maven,则可以将其放在单独的模块中)即 src/main/java
这里是package/directorymaven项目最佳实践树,希望对你有所帮助:
src --- main ----
| |
|--- test |--- config
| |
\--- site |--- java
|
|--- scripts
|
|--- resources
因此,如果该应用程序是一个测试框架(据我了解),我认为您应该将其放在 src/main/java 中,其中所有主要 java代码是。
如果你写一个测试框架my-test-framework
,你把代码放到src/main/java
。当您在某些 JAR my-jar
中使用测试框架时,您将其声明为 test
作用域依赖项。然后代码将不会投入生产。
我认为你误入歧途
- src/main/java will be deployed to production whereas src/test/java will not be.
我会改写为
- src/main/java contains the code that consumers of the module will use (it is the purpose of your module)
- 如果您的模块是关于最终用户使用的东西,它将投入生产。
- 如果您的模块是测试框架,那么它不会投入生产(在部署到服务器或客户端机器上的意义上),但其他模块会使用它,因此测试框架应该在
src/main/java
(假设您将测试框架构建为单独的模块)
如果你需要现实生活中的例子,你不需要再看 JUnit
(传说中的测试框架)
- src/main/java 包含 JUnit 测试框架
- src/test/java 包含测试测试框架的代码
更喜欢与 TestNG
一起工作? TestNG 的代码位于子模块“核心”中,但即便如此:
- 核心/src/main/java包含TestNG测试框架
- core/src/test/java 包含测试测试框架的代码