测试弹簧库

时间:2014-07-11 13:13:02

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

在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);
}

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

1 个答案:

答案 0 :(得分:0)

与测试一样,您应该确保知道自己正在测试什么。找到这些问题的答案:

  1. 您想测试底层数据库吗?
  2. 您是否要测试此存储库的Spring Data存储库连接器?
  3. 您想测试您的代码是否在界面上调用了正确的方法吗?
  4. 做#1是没用的:数据库供应商已经在其产品上运行了数千次测试。很少有理由再次这样做。

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

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

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

    如果您发现框架丢失错误或者您发现对象未被正确删除,则可以添加更多测试。但大多数情况下,由于数据库或Spring Data中的错误,这种情况不会发生。相反,您的代码不会调用deleteBy(),否则它将使用错误的参数调用该方法。