当前位置:  开发笔记 > 编程语言 > 正文

测试类在依赖模块中扩展测试类

如何解决《测试类在依赖模块中扩展测试类》经验,为你挑选了3个好方法。

我在一个模块中有一个测试类,它在一个依赖模块中扩展了另一个测试类.如何将依赖项的测试代码导入到依赖模块的测试范围中?

为了文盲,我有两个模块,"模块一"是"模块二"的依赖.SubTestCase是.的子类TestCase.

module-one
          \src\test\java\com\example\TestCase.java
module-two
          \src\test\java\com\example\SubTestCase.java

但是构建失败了,因为"module-one"的测试代码没有被导入"module-two",只是主代码.



1> Rich Seller..:

您可以使用maven-jar-plugin的test-jar目标将测试代码部署为其他工件.它将附加到项目并使用分类器测试进行部署.

  
    org.apache.maven.plugins
    maven-jar-plugin
    
      
        package
        
          test-jar
        
      
    
  

然后,其他项目可以通过在依赖项中声明测试分类器来引用测试jar.


  name.seller.rich
  foo
  1.0.0
  tests
  test



2> Haim Raman..:

关于Rich Seller的答案:使用tests过时请参阅用户指南.

我正在使用maven 2.2.1和maven-jar-plugin 2.2,它需要切换test-jar而不是tests.

请注意,测试jar不是传递的,因此您可能需要显式添加它们.


    ...
    
        
            name.seller.rich
            foo
            1.0.0
            test-jar
            test
         
    
     ...

更新以下Mike Sokolov评论:
2014-03-28更新了maven 3的用户公会,请参阅上面的链接说的

请注意,本指南的先前版本建议使用 tests 而不是 test-jar . 虽然目前适用于某些情况,但在调试JAR模块的反应器构建期间,如果调用安装之前的生命周期阶段,则它在任何使用者中都无法正常工作.在这种情况下,Maven不会从reactor构建的输出解析测试JAR,而是从本地/远程存储库解析测试JAR.显然,来自存储库的JAR可能已过时或完全丢失,导致构建失败(参见MNG-2045).



3> krosenvold..:

通常,除了常规modulename.jar文件之外,还可以通过构建和部署modulename-test.jar文件来解决此问题.您可以像常规工件一样将这些部署到repos.这并非完全无瑕疵,但对于代码工件来说效果不错.

然后,你会增加测试范围的依赖于测试罐到其他模块.

您还可以通过将"主"范围中的测试范围工件放在其自己的单独模块中来解决此问题,然后将其包含在其他模块的常规测试范围中.此解决方案在多模块构建中不能很好地工作,其中每个模块导出一些测试工件,因为您基本上获得2N模块.

当我们意识到类的数量相当有限并且存在与这两种解决方案相关的问题时,我们中的许多人实际上都放弃了这两种解决方案.我们只是将它们放在"主要"范围内的适当命名的包中.我只是忘记了为什么这两个第一个解决方案都很痛苦.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有