Unit testing 库中的实用程序测试类应该进行测试还是主测试?

Unit testing 库中的实用程序测试类应该进行测试还是主测试?,unit-testing,maven,project-structure,Unit Testing,Maven,Project Structure,例如,我在Maven projectCommon中有一个文件ConnectionDummy。它仅用于电子邮件库、扫描仪和通用中的测试。注意Common本身也包括单元测试,但这些文件只是单元测试的助手。它应该进入Common的test还是main Maven设置,但我认为这可能是许多技术的共同点。这取决于您对在生产系统中使用测试(实用程序)代码的感觉有多强烈。只是坐在那里无所事事的代码对您的生产环境有害吗?假设您的测试工具有漂亮的注释,例如Spring在运行时拾取的注释 我遇到过不在乎的人。我个人

例如,我在Maven project
Common
中有一个文件
ConnectionDummy
。它仅用于
电子邮件库
扫描仪
通用
中的测试。注意
Common
本身也包括单元测试,但这些文件只是单元测试的助手。它应该进入
Common
test
还是
main


Maven设置,但我认为这可能是许多技术的共同点。

这取决于您对在生产系统中使用测试(实用程序)代码的感觉有多强烈。只是坐在那里无所事事的代码对您的生产环境有害吗?假设您的测试工具有漂亮的注释,例如Spring在运行时拾取的注释

我遇到过不在乎的人。我个人对此感觉很强烈,不希望在我的生产环境中使用测试代码。如果这也是你的想法,我在我们的项目中看到了两种使用Maven的方法:

  • 测试实用程序代码位于Common的
    test
    文件夹中。您将最终为您的公共项目构建测试jar(
    testjar
    ),并且您可能会遇到可传递依赖性问题,当有人依赖您的测试jar时,您的测试实用程序代码所需的公共项目的任何
    test
    依赖性都将不存在。这是一个潜在的依赖性噩梦,我看到“包含项目”重新定义了很多依赖性,这些依赖性已经被“包含项目”很好地定义了,但是Maven没有发现它们在范围测试中是可传递的

  • 测试实用程序代码放在一个单独的测试项目中,例如CommonTest,它生成
    jar
    ,而不是
    testjar
    打包。这样,测试实用程序不仅对依赖的项目,而且对原始的公共项目本身,都变成了“实用程序”,一模一样。这样,您的
    test
    文件夹就真正成为项目的内部事务。也许这就是Maven的意思,否则为什么制作一个
    测试jar
    不是一个标准选项呢


  • 我想它应该转到
    main
    。如果它不是您在测试中真正需要的唯一类,那么将它们提取到单独的模块中可能是有意义的。+1:我推荐选项2)。多年来,根据我的经验,这被证明是一个更好的选择。