2014-10-30 132 views
1

我遇到了一个问题,即要让IntelliJ成功找到名为[公司前缀] .util.db的特定测试包。我试图在另一个模块的单元测试中从这个包中导入一个类。该软件包位于测试源文件夹下,但在常规源文件夹下没有并行(此模块的测试和常规软件包结构都包含[公司前缀] .util软件包,但有[公司前缀] .util.db软件包只在测试包中)。单元测试通过ant运行得很好,但由于某种原因,IntelliJ拒绝将导入视为有效。IntelliJ找不到测试包

错误似乎表明导入的[公司前缀] .util部分有效,但无法找到db子包。我如何帮助IntelliJ查看我需要的课程?

+0

您使用的是maven吗? – 2014-10-30 20:16:36

+0

我不是,我正在使用蚂蚁 – GentlemanJim 2014-10-31 08:18:13

回答

1

当您声明库的依赖关系时,即使使用测试作用域依赖关系,类路径中也只包含生产类,因为测试代码不会被添加到生产jar中。

要依赖测试文件夹中的资源(类,无论),必须将要打包的类放入可以依赖测试范围的库中。要做到这一点我们使用maven的jar插件生成测试-JAR(在我们的例子中,我们只对共享一个类感兴趣,但你可以发挥与包括列表,以适应自己):

<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
      <goals> 
       <goal>test-jar</goal> 
      </goals> 
      <configuration> 
       <includes> 
        <include>org/company/web/ValidatorTestUtils.class</include> 
       </includes> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

随后的依赖同时携带试验范围和类型:

<dependency> 
    <groupId>org.company.app</groupId> 
    <artifactId>core-web</artifactId> 
    <type>test-jar</type> 
    <scope>test</scope> 
</dependency> 

这使得从提供给相关模块的测试核心的Web模块的测试类。

+0

唉,我担心这可能是这种情况,但我不想仅仅假设局限性,因为IntelliJ让我对之前的隐藏功能感到惊讶。我正在使用蚂蚁,但我想我只能尽我所能地找到解决办法。谢谢 – GentlemanJim 2014-10-31 08:23:35