JMockit和EasyMock/jMock/Mockito/PowerMock之间有很多不同。
-
支持集成测试:JMockit支持
out-of-container
integration testing approach
,类似于
Spring Test module
提供但也支持Java EE。其他模拟库仅支持使用模拟对象的独立单元测试。
-
"faking"
API(另请参见
xUnit Patterns
mocking
应用程序编程接口。其他每个模拟库都只有一个模拟API。
-
除了“mock”之外,还完全支持“mocking”
“。其他模拟库使用它们创建的模拟对象,这些对象需要以某种方式传递给被测代码。使用EasyMock/jMock/Mockito,
static
方法、构造函数和“
new
-“ed”对象根本无法模拟。PowerMock也支持完全模拟,但仍然专注于模拟对象(特别是,新的ed对象必须通过
whenNew
录制,而使用JMockit测试可以简单地声明
@Mocked
-
支持模仿/伪造
final
类和方法。只有PowerMock也提供了这种支持。Mockito最近添加了一个“内联模拟生成器”,它增加了对
最终的
-
支持模拟/伪造未指定的子类和接口实现(其中测试仅声明要模拟/伪造的基类型)。
-
anyString
等)仅适用于
一些
参数,而其他模拟API需要这样的匹配器
每一个
单参数。
-
已证实的
在测试代码被执行之后,就像在Mockito中一样。EasyMock/jMock不支持此验证模型。
至于性能,用JMockit模拟类型(通过
类别重新定义
)与使用EasyMock/jMock/Mockito创建模拟对象相比,可能有更高的运行时开销(通过
),与PowerMock相比更低(通过
类别定义