Unitils vs Spring TestContext Framework

时间:2011-11-16 09:30:03

标签: unit-testing spring-test unitils

我正在考虑将哪个测试框架用于我的spring + hibernate Web应用程序。 最初我发现并对Unitils非常感兴趣,但后来我看到了标准的Spring TestContext Framework并开始有些疑惑。我对这个主题很新,但到目前为止,我的理解如下:

Unitils专业人士:

  • 混合了各种其他测试框架,即EasyMock或DbUnit
  • 构建于框架之上,提供一些额外的价值,即hibernate映射测试或反射测试实用程序

Spring TestContext Framework专业人员:

  • 允许在测试时使用标准的Spring注释
  • 可能拥有更大的用户群和更好的支持(这是我的假设,因为Unitils似乎基本上由两个人创建)
  • 还内置了一些Unitils功能(例如反射测试实用程序)
  • 如果我需要任何Unitils'更大'的功能,如DbUnit或EasyMock,我可以直接从源头获得常规DbUnit或EasyMock - 这使我可以始终拥有最新版本的DbUnit / EasyMock而无需等待Unitils使用当前的DbUnit / EasyMock发布新版本

所以现在我更倾向于使用Spring TestContext Framework。 有没有人对这些框架有更多的经验,可以帮助我向正确的方向倾斜?除了整合所有这些框架外,Unitils实际上提供了什么?

[编辑]刚刚发现了Unitils提供的更多内容:

这是关于Unitils的一个很好的演示,它说服我开始使用Unitils: http://www.javapolis.com/confluence/download/attachments/32918/C_14_09_04.pdf

我暂时将这个问题保持开放,也许会有人想出其他一些想法......

2 个答案:

答案 0 :(得分:3)

我们在项目中使用Unitils和Spring的测试框架。有了单元,我们遇到的问题就是有多个PersistenceUnit。 Unitils不支持它。当然春天呢。

我遇到的另一个问题是:Using unitils/dbMaintain to maintain database, how to exclude scripts from being run?

基本上,unitils没有每个底层框架的所有最新功能,例如DBMaintain,因为unitils使用其他框架的“旧”版本。

也就是说,Unitils确实有一些很方便的方法,比如DatabaseUnitils中提供的一些便利方法。我们特别喜欢updateSequences()

因此,为了获得最大的灵活性和/或如果您预期相当复杂的代码结构,我会尽可能坚持使用Spring的测试框架。

在许多其他情况下,unitils是一个非常方便的工具。

还有一点点......如果可能,我会建议支持单元测试和模拟框架,如Mockito与集成测试。我一直是一个“集成测试”重型测试仪,在最后一个项目中它已经变成了一个维护挑战。

答案 1 :(得分:1)

如您所知,Unitils是一个非常好的框架。

优点:

  1. Unitils现在使用Spring罐子。
  2. Unitils注入模块在我看来很有用,虽然你也可以在春天实现类似的东西。
  3. 缺点: 正如你所说,我认为它在Unitils论坛中缺乏适当的支持。我可以看到许多线程很长时间没有回答。但是stackoverflow对它有很好的支持:-)除非你需要额外的功能或错误修复。

    就个人而言,我觉得Unitils对我的测试很有帮助。