代码之家  ›  专栏  ›  技术社区  ›  Dead Programmer

如何测试junit中的行锁定异常

  •  4
  • Dead Programmer  · 技术社区  · 15 年前

    junit中是否有方法测试rowlocked异常?

    4 回复  |  直到 15 年前
        1
  •  6
  •   Noel M    15 年前

    如果你 mock 然后,您可以让您的模拟对象抛出锁定的行异常。

    因为您已经消除了对数据库的直接依赖,所以测试应该运行得更快,并且您不太容易因为数据库问题(例如数据库不可用或类似的问题)而出现“闪烁测试”。

    同样,这样,您只需测试代码,而与数据库无关—它与实现无关。如果您将来选择更改数据库供应商,则 (一) (二)

    一些模拟框架示例可以帮助您入门:

        2
  •  5
  •   Georgy Bolyuba    15 年前

    @Test(expected=SQLException.class)
    public void testReadLockedRowException() {
        ...
    }
    
        3
  •  3
  •   duffymo    15 年前

    Georgy是正确的,但是在实现中还需要更多:两个客户端来访问数据库。一个用来读取并挂起行,另一个用来尝试访问它并生成异常。

        4
  •  1
  •   gpeche    15 年前

    使用真实数据库:

    1. 打开两个DB会话
    2. 在会话2中,以冲突模式访问锁定的行,而不在会话1之前解锁它。