2012-04-30 48 views
2

我声明了与EasyMock的捆绑powermock测试依赖。Maven的测试依赖没有被发现

<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),但为了我的目的,我仅限于拥有一个依赖关系,包括所有必需的测试库。

+0

您是否检查过您正在使用的公共存储库以查看是否存在缺失的依赖关系(在您的情况下为org.easymock)?我有一个问题,依赖库已被更新为包含尚未发布到公共目录的依赖关系,然后必须去找到并将它们添加到我的本地/我们的内部存储库。 – amaidment

+0

好主意,但它似乎称为powermock-api-easymock,其中调用easymock(org.easymock),这似乎都存在于Maven Central上。 – Rhys

回答

2

追溯到powermock parent pom我发现easymock依赖项标记为“提供”。

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

看起来像powermock期待其客户(你在这种情况下)提供easymock罐子。

+0

啊,我认为我的目标是找出是否有任何中央依赖项会将所有内容都拉进来。谢谢。 – Rhys

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

+0

但它确实取决于powermock-api-easymock,它本身取决于org.easymock:easymock,应该不会一样好吗? – Rhys

+0

是的,对不起,你是对的。你可以添加错误输出吗? –

+0

嗨,这真的只是“包org.easymock不存在”和“找不到符号” - 如果没有任何亮点,我可以稍后添加更详细的日志。我想知道如果easymock不会在类路径中结束 - 我没有看到easymock jar,我有点期待 – Rhys