无法解析 PowerMockito 但可以解析 PowerMockRunner

问题描述

我正在尝试使用 powermockito,但遇到了一些困难。

这是我在 pom.xml 中导入的内容

<!-- https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 -->
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>2.0.9</version>
    <scope>test</scope>
</dependency>

这些注解被添加在测试类定义之上:

@RunWith(powermockrunner.class)
@PrepareForTest(TestedClass.class)

powermockrunner 已成功识别,但是当我尝试使用 powermockito 以使用 powermockito.withNew() 之类的方法时,powermockito 无法识别。

有人知道这里有什么问题吗?

解决方法

您仅添加了与 junit4 的 powermock 集成

为了访问 PowerMockito,您必须将其添加为单独的依赖项:

<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-easymock</artifactId>
        <version>${your-powermock-version}</version>
</dependency>
,

你也应该导入:

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito</artifactId>
    <version>1.6.4</version>
    <scope>test</scope>
</dependency>

此库包含 API。您导入的那个只包含对 jUnit4 的支持。

,

这里是 maven 的完整 PowerMockito 依赖项。

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

如果您打算使用 PowerMockRule,那么除了上述依赖项之外,还要添加这些。

   <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4-rule</artifactId>
      <version>${your-powermock-version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-classloading-objenesis</artifactId>
      <version>${your-powermock-version}</version>
      <scope>test</scope>
    </dependency>

PowerMocking 快乐!!!