如何在没有Maven依赖的情况下使用Mockito

时间:2018-08-23 16:02:16

标签: java maven junit mockito

我想使用Mockito编写一些测试,但是我的项目不是Maven项目,因此我无法按照Mockito文档的建议添加依赖项。

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

我可以导入库和所有这些东西,但是看来模仿工具不起作用。

我尝试了一个简单的示例,取自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);

我想念什么吗?

2 个答案:

答案 0 :(得分:4)

Mockito对非Mockito项目具有传递依赖。
这是“ mvndependency: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版本中。

答案 1 :(得分:3)

基于您在注释中提供的堆栈跟踪,看来您的项目仍缺少其他依赖项。因此,您也必须手动下载这些文件。

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

我尝试自己运行示例,而这些是我必须手动添加的依赖项才能使工作正常进行:

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