问题标签 [easymock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
100714 浏览

java - EasyMock:无效方法

我有一个方法在一个类中返回 void,该类是我要测试的类的依赖项。

这个类很大,我只使用它的这个单一方法。我需要为测试替换此方法的实现,因为我希望它做一些不同的事情,并且我需要能够访问此方法接收的参数。

我在EasyMock中找不到这样做的方法。我想我知道如何使用 Mockito 来做到这一点,doAnswer除非绝对必要,否则我不想添加另一个库。

0 投票
4 回答
10070 浏览

unit-testing - 使用 Spring 注入 EasyMock 模拟导致 ClassCastException

我试图让 Spring 在我的单元测试中注入 EasyMock 模拟。

在我的 applicationContext.xml 中,我有这个:

在我的单元测试中,我有这个:

当我尝试运行我的测试时,我得到了这个堆栈跟踪:

我对 Spring 和 EasyMock 都很陌生,但在我看来,错误是由 EasyMock 试图调用它假定为 EasyMock 实例的方法引起的,但实际上是由 Spring 创建的动态代理。据我了解,动态代理仅实现接口中定义的方法,在本例中为 Service 接口。

我不明白的是,从我读到的(也在这里),我试图实现的目标至少似乎是可能的。

所以我的问题是:我没有做什么或者我做错了什么?

0 投票
6 回答
25291 浏览

java - 是否可以使用 EasyMock 创建一个实现多个接口的模拟对象?

是否可以使用 EasyMock 创建一个实现多个接口的模拟对象?

例如,接口Foo和接口Closeable

在 Rhino Mocks 中,您可以在创建 mock 对象时提供多个接口,但 EasyMock 的createMock()方法只接受一种类型。

是否可以使用 EasyMock 来实现这一点,而无需求助于创建一个同时扩展Fooand的临时接口,Closeable然后对其进行模拟?

0 投票
1 回答
18977 浏览

java - 使用easymock,重复void方法调用

我是easymock的新手。

我正在尝试模拟一项服务,其中一种方法是无效方法,该方法将被调用未知(且大量)次。如何指定允许任意数量的调用?

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

谢谢

0 投票
5 回答
16286 浏览

java - 使用 EasyMock 模拟一个具体的类

是否可以使用 EaskMock 模拟一个具体的类?如果是这样,我该怎么做?

0 投票
3 回答
1535 浏览

java - 使用 easymock 验证对象类型

我刚刚进入easymock的世界。我想问一下easymock是否只模拟接口对象?因此,在我努力理解的过程中,我编写了一个类来在 java 中生成唯一凭证。我显然不知道它将生成哪个值以用于断言内容。那么如何确保生成的凭证是 long 类型的?

这是功能

这是测试类

好吧,这对您来说可能看起来很棒,但我仍然对如何做到这一点感到困惑,感谢您的帮助

0 投票
1 回答
5698 浏览

java - easymock - 匹配器和多个调用

下面是我使用自己的匹配器完成的一个测试。我知道在这种情况下我可以使用标准匹配器,但在我的真实代码中我需要一个更复杂的匹配器。

测试通过 - 勾选 VG。问题是似乎有一个额外的IArgumentMatcher.matches()方法调用返回 false,但测试通过了。

我得到的输出是:

所以问题是为什么我得到了 MISMATCH 行,并且我做错了什么?

测试代码为:

0 投票
5 回答
369 浏览

frameworks - 模拟框架和高测试覆盖率重要吗?

模拟框架,例如 EasyMock,可以更容易地插入虚拟依赖项。话虽如此,使用它们来确保如何调用特定组件上的不同方法(以及以什么顺序)对我来说似乎很糟糕。它将行为暴露给测试类,这使得维护生产代码变得更加困难。而且我真的没有看到好处;在精神上,我觉得我被束缚在一个沉重的球上。

我更喜欢只针对接口进行测试,将测试数据作为输入并断言结果。更好的是,使用一些自动生成测试数据的测试工具来验证给定的属性。例如,将一个元素添加到列表中,然后立即删除它会产生相同的列表。

在我们的工作场所,我们使用提供测试覆盖率的 Hudson。不幸的是,很容易盲目地痴迷于一切都经过测试。我强烈认为,如果一个人想要在维护模式下也有生产力,那么不应该测试所有东西。一个很好的例子是 Web 框架中的控制器。通常它们应该包含很少的逻辑,在我诚实的意见中,使用控制器以特定顺序调用某某方法的模拟框架进行测试是荒谬的。

亲爱的SOers,您对此有何看法?

0 投票
5 回答
2574 浏览

java - 单元测试 - 使用不覆盖等于的对象检查方法调用

这是关于如何使用模拟对象对 Java 类进行单元测试的一般问题。
我可以用这个例子来总结我的问题。
假设我有一个名为 MyInterface.java 的接口和一个不覆盖 equals() 的“TwoString”对象

“双字符串.java”

“我的接口.java”

然后我有“MyClass.java”对象。它的构造函数接受 MyInterface 的具体实现。
MyClass methodToTest() 包含以某种方式创建 TwoString 对象的逻辑。假设它将被创建为

因此,当调用 methodToTest() 时,它会创建这个 TwoString 对象,该对象将传递给接口方法callMe(TwoString twoString)

我基本上想模拟界面。用这个模拟创建一个 MyClass 对象。然后验证是否使用 TwoString 的特定实例调用了模拟方法。

我正在使用 EasyMock,这是一些 java 代码

“MyClassTest.java”

问题来了。我在通话中期待的 TwoString 对象

与 MyClass.methodToTest() 中生成的不同,因为 TwoString.java 不会覆盖等于。

我可以使用 TwoString 实例跳过问题

但我想确保使用 TwoString 的特定实例调用接口方法,该实例包含“a”作为 string1,“b”作为 string2。

在这种情况下,TwoString 对象非常简单,并且很容易覆盖 equals 方法 - 但是如果我需要检查更复杂的对象怎么办。

谢谢

编辑:

我将尝试通过此示例使其更具可读性

???SomeObj = myClass.run() 使用 myObjList 中包含的数据创建的对象。
假设 SomeObj 来自第三方库,它不会覆盖 equals。

我想确定 taskExecutorMock.execute() 方法是使用该 SomeObj 的特定实例调用的

我如何测试 myClass.run() 实际上是用正确的实例调用 taskExecutorMock 方法

0 投票
3 回答
1742 浏览

java - Easymock 部分模拟(EasyMock ClassExtension),好还是坏?

我已经使用 EasyMock 编写了很多 Mock 对象。但是,我经常发现编写部分模拟非常耗时,而且感觉不“正确”。

我会说这是一个设计错误,因为我尝试模拟的类将多个关注点合二为一,因此我应该创建单独的类以分离关注点。

你怎么看?部分嘲笑是好事还是坏事?而且,如果好/坏,为什么?如果你注意到你不能模拟对象,因为你只想模拟几个方法,你会建议什么?