答案 0 :(得分:3)
你能详细说明所需的时间:
根据您的答案,可以调查几个方向,例如通过巧妙配置实际减少(只有几个百分点,我害怕)时间......
但我最初的猜测是,你可能会有一个更聪明的举动,实际上并没有为你的测试实现Hibernate。这会解决所有问题,不是吗?虽然这样看似愚蠢,但这就是我们的进展:
确实,这种测试组织会影响应用程序设计和代码,但这也是当前最佳实践所规定的,因此我们可以从中获得许多优势。示例:
之前,我们无法独立于数据库测试“do algo AB”,因为它是包含数据库访问的全局流程的一部分(更多的是,访问与逻辑混合在一起)。
之后,“do algo AB”很容易在UnitTesting中测试。
我们还发现首先使用只读数据库操作,处理,然后只写数据库操作有许多优点。
JUnit性能:如前所述。
请注意,可以使用IntegrationTesting完成Daos测试。实际上,在我们的项目中,我们将JUnit集中在UnitTesting上,并且几乎没有IntegrationTests,我们直接从UI测试它们中的大部分...... IntegrationTesting ROI不是那么好; - )
简短而专注的交易:例如,我们可以有两个交易(和会话),享受复杂只读阶段的Hibernate身份保证。当算法修改实体时,Hibernate不会触发隐式更新(我们项目中的早期开发人员不知道这可能会发生!)。如果算法决定不更新数据库,没有时间花在将数据发送到数据库上,则无需取消该事务......
算法的可重用性:我们有很多情况下,计算的相应数据已经被之前调用的算法加载,因此从数据库重新加载它是一种浪费。此外,重新加载可能会携带不同的数据,导致计算脆弱。
......其他我现在不记得了; - )
Junit.org网站有很多很好的测试策略资源。 我也很喜欢优秀的Rainsberger书籍(http://www.manning.com/rainsberger/),我绝对推荐它用于任何使用自动化测试且有多个开发人员的项目。 : - )
答案 1 :(得分:0)
需要多长时间?我知道这需要一段时间但不会那么久。如果花费那么多时间,我不知道你能在这里做些什么。
你确定你的应用程序中的sessionfactory在启动时被初始化了吗?
您可以使用单元测试来测试代码的某些部分,从而减少整个应用程序的启动。