使用模拟对象相对于使用已知数据的静态测试数据库并使用事务确保在针对数据库进行测试时没有更改的优点是什么?
使用模拟对象的优点是可以更加轻松地模拟测试场景并且可以避免对真实数据库的依赖。这意味着测试可以更快地运行而且更加独立。使用静态测试数据库和事务需要额外的设置和处理,并且需要更长的时间来执行测试。使用模拟对象相对于使用已知数据的静态测试数据库并使用事务确保在针对数据库进行测试时没有更改的优点是什么?
使用模拟对象的优点是可以更加轻松地模拟测试场景并且可以避免对真实数据库的依赖。这意味着测试可以更快地运行而且更加独立。使用静态测试数据库和事务需要额外的设置和处理,并且需要更长的时间来执行测试。你可以同时进行这两种测试。使用模拟对象来测试业务逻辑层(BLL)的代码,然后使用测试数据库来测试数据访问层(DAL)的代码。这样,如果出现问题,你可以轻松地通过测试失败的位置看出问题所在。
通常你会同时使用这两种方法。
对于单元测试,您将使用模拟对象。这样,您可以以更细粒度的方式测试系统,因为您可以模拟每个对象 - 不仅是包装数据库连接的对象。一般来说,最好将每个类与所有依赖项分开进行单元测试。好处是 - 可以在所有级别上测试所有错误处理并确保测试所有代码路径,当您获得测试失败时,可以立即找到原因等。
对于集成和端到端测试,您将测试系统的大部分或整个系统。然后,您将连接到数据库(因为此连接是测试的一部分)。显然,您必须确保数据库处于已知状态等等。
您最终将拥有比集成测试更多的单元测试,因此使它们非常快速实际上非常重要 - 这是使用模拟对象的另一个优点。
使用数据库进行测试的设置可能很繁琐。如果你发现自己花费更多时间来设置数据库,只是为了测试业务逻辑的某些功能方面,那么你可能想要使用模拟/虚假数据。