使用API​​测试设置中的最佳实践 - 需要数据库通信(TDD)

时间:2016-06-24 07:40:00

标签: rest unit-testing testing tdd web-api-testing

我将编写一个新的端点来解锁域对象,例如:

../domainObject/{id}/unlock

在应用TDD时,我已经开始先编写API测试了。当测试失败时,我将开始编写Integration和Unit测试并实现真正的代码。

在API测试中,我需要一个用于测试夹具设置的锁定域数据来测试将要创建的解锁端点。但是,没有用于锁定系统上的域对象的端点。 (我们的Quartz作业锁定数据)我的意思是,我需要直接使用数据库来创建数据。

我知道在API测试中,直接使用数据库不是最佳做法。如果您需要测试数据,也应该调用API。 e.g。

../domainObject/{id}/lock

在这种情况下,这种情况应该是例外吗?或者我应该遵循其他任何做法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

这里没有好的或坏的做法,关键在于您对包括数据库在内的系统的端到端测试的重视程度。

测试数据库部分需要更多的基础架构,因为您必须使用内存数据库来加快测试运行速度,或者在开发环境中设置完整的永久测试数据库。在执行后者时,最好为端到端测试设置一个单独的测试套件,其运行频率低于普通测试套件,因为它不可避免地会变慢。 在这种情况下,您将在数据库中始终存在预先存在的测试数据,并且锁定的对象可以是其中之一。

如果您不关心所有这些,您可以存根数据存储抽象(存储库,DAO或其他)以返回固定的锁定对象。