2

我声明了一个对 powermock 的测试依赖,其中包含了 easymock。

<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-easymock-release-full</artifactId>
  <version>1.4.12</version>
  <type>pom</type>
  <scope>test</scope>
</dependency>

当我运行mvn test时,测试 src 声称能够找到org.powermock但不能org.easymock,尽管它包含在上述依赖项中。

我想知道这是否是由于测试范围的传递性造成的问题,所以我也尝试了编译范围(因为文档http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html提到编译依赖项在测试时可用)没有任何运气。

我也尝试过使用捆绑的 jar 而不是 pom,但无济于事。我意识到我可以单独声明依赖项(即 powermock 和 easymock 的单独依赖项),但出于我的目的,我仅限于一个依赖项,包括所有必要的测试库。

4

2 回答 2

2

将其追溯到 powermock 父 pom,我看到 easymock 依赖项被标记为“已提供”。

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>3.1</version>
      <scope>provided</scope>
    </dependency>

看起来 powermock 期望它的客户(在这种情况下是你)提供 easymock 罐子。

于 2012-04-30T13:44:58.603 回答
1

根据powermock-easymock-release-full POM,它不依赖easymock(即easymock没有出现在powermock-easymock-release-full依赖项中)。因此,您必须向 easymock 添加另一个依赖项,具体取决于您使用的测试引擎(JUnit 或 TestNG):http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org。 powermock%22%20AND%20%22easymock%22

于 2012-04-30T10:56:47.260 回答