标签: easymock

使用easymock,重复void方法调用

我是easymock的新手.

我试图模拟一个服务,其中一个方法是一个void方法,将被称为未知(和大)次数.如何指定允许任意数量的呼叫?

我知道如何为具有非void返回类型的方法执行此操作.

谢谢

java junit easymock

22
推荐指数
1
解决办法
2万
查看次数

EasyMock 3.0,模拟类抛出java.lang.IllegalStateException:没有最后一次调用可用的模拟

运行以下单元测试会抛出异常:java.lang.IllegalStateException:没有最后一次调用可用的模拟


import org.easymock.*;
import org.junit.*;

public class MyTest {

    @Test
    public void testWithClass() {
        Thread threadMock = EasyMock.createMock(Thread.class);
        EasyMock.expect(threadMock.isAlive()).andReturn(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么,在网上找不到任何好的例子.你如何使用EasyMock 3.0模拟一个类.上述单元测试有什么问题?任何帮助将不胜感激.

我的项目包括以下maven依赖项

<dependency>
   <groupId>org.easymock</groupId>
   <artifactId>easymock</artifactId>
   <version>3.0</version>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>cglib</groupId>
   <artifactId>cglib-nodep</artifactId>
   <version>2.2</version>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>org.objenesis</groupId>
   <artifactId>objenesis</artifactId>
   <version>1.2</version>
   <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

easymock

22
推荐指数
2
解决办法
5万
查看次数

Mockito比EasyMock更受欢迎?

最近我切换到了Mockito框架并且对它非常满意(另见blog-post).从EasyMock到Mockito的转换非常简单,我设法使测试兼容(即测试用例表现相同).

你是否看到真正的理由或枪战标准更喜欢EasyMock而不是Mockito?到目前为止我使用的代码库不能,但我对你的观点感兴趣.

java unit-testing easymock mocking mockito

21
推荐指数
3
解决办法
9557
查看次数

获取EasyMock模拟对象以抛出异常

我正在使用EasyMock为许多协作类编写单元测试.其中一个班(让调用它的Foo)打开网络连接到远程服务器,并解析该服务器的XML响应弄成了类其余的可以使用.

目前,我的测试仅包括一切都很糟糕且远程服务器启动并运行并按预期返回XML的场景.但是,如果我可以模拟以便模拟在远程服务器关闭时会发生什么,或者存在导致被抛出的其他问题,我更高兴.FooIOExceptionFoo

我已经看过EasyMock API了,我看不到任何看起来像是一个让mock去抛出异常的方法.

对我来说,进行Exception基础测试并不是绝对必要的,但我很好奇是否有可能使用EasyMock,而且我认为用Foo这种方式测试公共合同会很有用.

以前有人用EasyMock做过这样的事吗?

参考

java unit-testing easymock

21
推荐指数
2
解决办法
4万
查看次数

使用返回整数列表的power mock测试私有方法

我有一个私有方法,它取一个整数值列表返回一个整数值列表.我如何使用power mock来测试它.我是powermock的新手.可以用简单的模拟进行测试..?怎么样..

java easymock powermock

20
推荐指数
2
解决办法
3万
查看次数

EasyMock对void方法的期望

我正在使用EasyMock进行一些单元测试,我不明白它的用法EasyMock.expectLastCall().正如您在下面的代码中看到的,我有一个带有方法的对象,该方法返回在其他对象的方法中调用的void.我认为我必须让EasyMock期望该方法调用,但我尝试注释掉expectLastCall()调用它仍然有效.是因为我通过EasyMock.anyObject())它将它注册为预期的电话或是否还有其他事情发生?

MyObject obj = EasyMock.createMock(MyObject.class);
MySomething something = EasyMock.createMock(MySomething.class);
EasyMock.expect(obj.methodThatReturnsSomething()).andReturn(something);

obj.methodThatReturnsVoid(EasyMock.<String>anyObject());

// whether I comment this out or not, it works
EasyMock.expectLastCall();

EasyMock.replay(obj);

// This method calls the obj.methodThatReturnsVoid()
someOtherObject.method(obj);
Run Code Online (Sandbox Code Playgroud)

EasyMock的API文档说expectLastCall():

Returns the expectation setter for the last expected invocation in the current thread. This method is used for expected invocations on void methods.
Run Code Online (Sandbox Code Playgroud)

java unit-testing easymock

20
推荐指数
1
解决办法
6万
查看次数

如何使用EasyMock测试void方法

我已经看到了一些关于此的问题,但我似乎无法理解我的特定问题的任何答案.

我有一个模拟对象,让我们调用"object1",我发送给一些方法进行测试,让我们调用testMethod().所以我最终打电话了

testMethod(object1);
Run Code Online (Sandbox Code Playgroud)

用于检测.现在,在这个testMethod的某个地方,将会有一个调用方法的部分

object1.toggleDisplay();
Run Code Online (Sandbox Code Playgroud)

这是一种无效方法.如果方法是这样的

object1.getDisplay()
Run Code Online (Sandbox Code Playgroud)

实际上它返回的地方,我通常会这样做

EasyMock.expect(object1.getDisplay()).andReturn(whatever);
Run Code Online (Sandbox Code Playgroud)

但是,这是一个无效方法,我想测试一下,确实已经调用了一定次数.最简单的方法是什么?

谢谢

java junit unit-testing easymock

19
推荐指数
2
解决办法
4万
查看次数

java.lang.IllegalStateException:不兼容的返回值类型

我正在使用EasyMock在测试用例中创建模拟类.

expect(entity.getType()).andReturn("string");
Run Code Online (Sandbox Code Playgroud)

Type属于String数据类型.在我的开发环境中它运行良好.但是,如果我转移到我的服务器并采取构建,它失败并出现以下错误:

java.lang.IllegalStateException: incompatible return value type
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它在服务器中失败并在我的开发机器中执行.

开发EasyMock版本:2.5.2

java unit-testing easymock java-ee

18
推荐指数
3
解决办法
2万
查看次数

测试使用EasyMock调用void方法

这可能吗?我尝试过,EasyMock.expectLastCall().times(0);但EasyMock抱怨时间必须> = 1

java unit-testing easymock

16
推荐指数
4
解决办法
2万
查看次数

EasyMock:java.lang.IllegalStateException:1匹配预期,2记录

我遇到了EasyMock 2.5.2和JUnit 4.8.2(通过Eclipse运行)的问题.我在这里阅读了所有类似的帖子,但没有找到答案.我有一个包含两个测试相同方法的测试的类.我正在使用匹配器.

  1. 每次测试都在单独运行时通过.
  2. 第一个测试总是通过 - 如果我在文件中切换测试的顺序,这是真的.

以下是测试代码的简化版本:

private Xthing mockXthing;
private MainThing mainThing;

@Before
public void setUp() {
    mockXthing = EasyMock.createMock(Xthing.class);
    mainThing = new MainThing();
    mainThing.setxThing(mockXthing);
}

@After
public void cleanUp() {
    EasyMock.reset(mockXthing);
}

@Test
public void testTwo() {
    String abc = "abc";
    EasyMock.expect(mockXthing.doXthing((String) EasyMock.anyObject())).andReturn(abc);
    EasyMock.replay(mockXthing);
    String testResult = mainThing.testCallingXthing((Long) EasyMock.anyObject());
    assertEquals("abc", testResult);
    EasyMock.verify(mockXthing);
}

@Test
public void testOne() {
    String xyz = "xyz";
    EasyMock.expect(mockXthing.doXthing((String) EasyMock.anyObject())).andReturn(xyz);
    EasyMock.replay(mockXthing);
    String testResult = mainThing.testCallingXthing((Long) EasyMock.anyObject());
    assertEquals("xyz", testResult);
    EasyMock.verify(mockXthing);
}
Run Code Online (Sandbox Code Playgroud)

第二次(或最后一次)测试总是失败,并出现以下错误:

java.lang.IllegalStateException: 1 …
Run Code Online (Sandbox Code Playgroud)

java easymock matcher

16
推荐指数
2
解决办法
3万
查看次数

标签 统计

easymock ×10

java ×9

unit-testing ×6

junit ×2

java-ee ×1

matcher ×1

mocking ×1

mockito ×1

powermock ×1