代码之家  ›  专栏  ›  技术社区  ›  Garry Shutler

数据库集成测试

  •  10
  • Garry Shutler  · 技术社区  · 17 年前

    当您仅使用数据访问层或大部分应用程序堆栈进行集成测试时。如果在同一数据库上运行多个测试,那么防止它们相互冲突的最佳方法是什么?

    6 回复  |  直到 17 年前
        1
  •  10
  •   Orion Edwards    17 年前

    交易。

    ruby on rails单元测试框架的作用是:

    Load all fixture data.
    
    For each test:
    
      BEGIN TRANSACTION
    
        # Yield control to user code
    
      ROLLBACK TRANSACTION
    
    End for each
    

    1. 测试对数据库所做的任何更改都不会影响正在进行的其他线程
    2. 这比为每个测试手动重新加载数据快上百万倍。

        2
  •  9
  •   Free Wildebeest    17 年前

    对于简单的数据库应用程序,我发现使用 SQLite 极宝贵的它允许您为每个测试拥有一个唯一且独立的数据库。

        3
  •  1
  •   Bradley Harris    17 年前

    为了补充免费角马的答案,我也使用了 HSQLDB

        4
  •  0
  •   Garry Shutler    17 年前

        5
  •  0
  •   Techboy    17 年前

    还可以在不同的时间运行测试,以便它们不会影响彼此的性能或有效性。

        6
  •  0
  •   Steven Turman Steven Turman    17 年前

    虽然在这里的另一个答案中没有Rails单元测试框架那么聪明,但为每个测试或测试组创建不同的数据是另一种方法。这个解决方案的繁琐程度取决于您拥有的测试用例的数量以及它们之间的依赖程度。如果每个测试或一组相关测试都有一个数据库,那么这种单调乏味的情况就依然存在。

    推荐文章