无法解析 PowerMockito 但可以解析 PowerMockRunner

Cannot resolve PowerMockito but can 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>

这些注释是在测试 class 定义之上添加的:

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

PowerMockRunner 被成功识别,但是当我尝试使用 PowerMockito 以使用 PowerMockito.withNew() 之类的方法时,PowerMockito 未被识别。

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

您还应该导入:

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

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

您只添加了与 junit4 的 powermock 集成

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

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

这是 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 !!!