【问题标题】:Testing spring repositories测试弹簧存储库
【发布时间】:2014-09-02 03:10:00
【问题描述】:

在 Spring Data 中,我发现名为 JpaRepository 的接口非常有用。因为我需要更多功能,所以我决定创建自己的存储库界面:

public interface BaseRepository<T, ID extends Serializable>
        extends JpaRepository<T, ID> {
    public <TA, TV> int deleteBy(SingularAttribute<T, TA> attr, TV val);
}

如您所见,这是一个通用接口。它工作正常,但我想知道如何测试它?当然,我可以为每个具体的存储库编写集成测试,但我正在寻找更好的方法。

【问题讨论】:

    标签: spring testing junit integration-testing spring-test


    【解决方案1】:

    与测试一样,您应该确保自己知道要测试的内容。找到这些问题的答案:

    1. 是否要测试底层数据库?
    2. 是否要为此存储库测试 Spring Data 存储库连接器?
    3. 您想测试您的代码是否在接口上调用了正确的方法吗?

    执行 #1 是没有用的:数据库供应商已经对其产品进行了数千次测试。很少有理由再做这种努力。

    除非您怀疑 Spring Data 的代码中存在错误,否则执行 #2 是没有用的。

    这给我们留下了#3。使用模拟框架确保在适当的位置调用该方法(也可能检查参数)。

    这样,您可以确保您的代码行为正确。

    如果您注意到框架抛出错误或者您注意到对象没有被正确删除,您可以添加更多测试。但大多数情况下,这不会因为数据库或 Spring Data 中的错误而发生。相反,您的代码不会调用deleteBy(),否则会使用错误的参数调用方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-19
      • 2015-12-29
      • 2011-11-27
      • 2019-09-14
      • 2014-02-06
      • 2018-10-03
      • 1970-01-01
      • 2020-01-04
      相关资源
      最近更新 更多