【问题标题】:Which Maven artifacts should I use to import PowerMock?我应该使用哪些 Maven 工件来导入 PowerMock?
【发布时间】:2013-09-05 20:35:10
【问题描述】:

我需要将哪些 jar 添加到我的 pom.xml 才能让 PowerMock 与 Mockito 一起使用?我有以下依赖项:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>1.9.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito</artifactId>
    <version>1.4.11</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-support</artifactId>
    <version>1.4.11</version>
    <scope>test</scope>
 </dependency>

但是当我在类级别添加@PrepareForTest 注解时,Eclipse 找不到它,但它可以找到PowerMockito。我错过了什么罐子?

【问题讨论】:

  • 这确实是一个很好的问题,因为对于第一次使用powermock的人来说,虽然很方便地分开了jar,但使用maven并不容易添加。我必须知道从哪个罐子开始!

标签: java maven mockito powermock


【解决方案1】:

根据 PowerMock wiki 上的 Mockito_Maven 页面,使用这个:

<properties>
    <powermock.version>1.6.6</powermock.version>
</properties>
<dependencies>
   <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
   </dependency>
   <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-api-mockito</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
   </dependency>
</dependencies>

powermock-api-support 好像是“utility classes only”,这里还需要powermock-module-junit4 提供的核心库。

【讨论】:

  • 我已将 powermock-module-juint4 jar 添加到类路径,但仍然看到相同的问题:>>> 此行有多个标记 - 语法错误,插入“枚举标识符”以完成 EnumHeaderName -语法错误,插入“EnumBody”以完成 EnumDeclaration - PrepareForTest 无法解析为类型 - 注释类型 PrepareForTest 的属性值未定义
  • 您确定不需要其他依赖项吗?没有代码抛出异常。当我将@PrepareForTest 添加到我的测试类时,Eclipse 抱怨它找不到@PrepareForTest。我查看了powermock-module-junit4powermock-api-mockito 的来源,但看不到@PrepareForTest 注释。您能告诉我 1.4.11 版中的 @PrepareForTest 包含什么 jar 吗?
  • @user powermock-core contains @PrepareForTest。但是,由于您可以在您的问题中从powermock-api-mockito 追逐相同的传递依赖项,看起来您可能以不引入传递 Maven 依赖项的方式设置 Eclipse。我们需要了解更多不过,在弄清楚那部分之前,请先了解一下您的 Eclipse 设置。
  • 根据我们掌握的信息,Jeff 的回答仍然是正确的。你能解决这个问题吗?
  • @Line 这两个很好,但文本编辑对我来说太远了——标点符号不正确,TestNG 细节使答案更难理解——而且我没有“改进”或“部分改进”接受”按钮,只是“拒绝”。尽管您的编辑有其他批准者,但至少有其他审阅者出于同样的原因拒绝了,并且您的编辑日志可能会显示该全文原因。 Please be mindful when your edits change a post's meaning.
【解决方案2】:

确保你有这个导入:

import org.powermock.core.classloader.annotations.PrepareForTest;

这个罐子里有它:

【讨论】:

    【解决方案3】:

    你在写:

        @PrepareForTest(Class.class);
    

    代替:

        @PrepareForTest(Class.class)
    

    我遇到了完全相同的问题并以这种方式解决了。

    【讨论】:

    • 一个好的 IDE 会因为这个语法错误而对你大喊大叫。如果在注释 Eclipse 抱怨 Multiple markers at this line - Syntax error, insert "enum Identifier" to complete EnumHeaderName - Syntax error, insert "EnumBody" to complete EnumDeclaration@l3k 之后添加分号(;)
    【解决方案4】:

    除了 powermock-module-junit4powermock-api-mockito 依赖项 之外,下载 Mockito 依赖项 zip 文件。直接在您的项目中添加这些 jar,它应该可以工作并相应地配置您的 pom。

    Power Mockito dependencies - All Jars

    【讨论】:

      猜你喜欢
      • 2014-12-12
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      相关资源
      最近更新 更多