【问题标题】:How to use Mockito without maven dependency如何在没有 maven 依赖的情况下使用 Mockito
【发布时间】:2018-08-23 16:02:16
【问题描述】:

我想使用 mockito 编写一些测试,但我的项目不是 maven 项目,所以我无法按照 mockito 文档的建议添加依赖项。

所以我下载了mockito-core-2.21.0-javadoc.jarmockito-core-2.21.0.jarmockito-core-2.21.0-sources.jar 并将它们作为包装好的jar 添加到我的项目中。

我可以导入库和所有这些东西,但 mockito 似乎不起作用。

我尝试了这个取自here的简单示例:

import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
import java.util.Iterator;
import org.junit.Test;
....
 @Test
 public void iterator_will_return_hello_world(){
  //arrange
  Iterator i=mock(Iterator.class);
  when(i.next()).thenReturn("Hello").thenReturn("World");
  //act
  String result=i.next()+" "+i.next();
  //assert
  assertEquals("Hello World", result);
 }

但是,在运行测试时,它会失败。失败的那一行是Iterator i=mock(Iterator.class);

我错过了什么吗?

【问题讨论】:

  • 您能否添加一个堆栈跟踪,以便我们查看它究竟是如何失败的?
  • @hinson 感谢您的关注。这是:https://pastebin.com/Ghp1pGHj
  • 几乎所有问题的答案,包括“...但我不是用 Maven 构建”都是“改用 maven 构建”。

标签: java maven junit mockito


【解决方案1】:

Mockito 对非 Mockito 项目具有传递依赖关系。
这是“mvn dependency:tree”运行的输出:

[INFO] \- org.mockito:mockito-core:jar:2.8.47:test
[INFO]    +- net.bytebuddy:byte-buddy:jar:1.6.14:test
[INFO]    +- net.bytebuddy:byte-buddy-agent:jar:1.6.14:test
[INFO]    \- org.objenesis:objenesis:jar:2.5:test

基于此, 您需要将 bytebuddy 和 objenesis jar 添加到您的非 Maven 构建中。

【讨论】:

  • 工作就像一个魅力。谢谢!
【解决方案2】:

根据您在评论中提供的堆栈跟踪,您的项目似乎仍然缺少其他依赖项。因此,您还必须手动下载这些内容。

堆栈跟踪指向“net.bytebuddy”,您可以在此处查看编译依赖项: https://mvnrepository.com/artifact/org.mockito/mockito-core/2.21.0

我尝试自己运行示例,这些是我必须手动包含的依赖项才能使事情正常运行:

找出需要哪些依赖的一种方法是实际使用 maven 依赖树命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多