我正在寻找有关如何以纯 TDD 方式创建 Spring Web 应用程序(使用休眠)的建议。这意味着您不应该在没有先进行单元测试失败的情况下编写生产代码。
您会对应用程序上下文的创建进行单元测试吗?如果是的话,你会怎么做?
当使用 java 配置而不是 xml 或基于注释的配置时,TDD 一个 spring 应用程序会更容易吗?
我正在寻找有关如何以纯 TDD 方式创建 Spring Web 应用程序(使用休眠)的建议。这意味着您不应该在没有先进行单元测试失败的情况下编写生产代码。
您会对应用程序上下文的创建进行单元测试吗?如果是的话,你会怎么做?
当使用 java 配置而不是 xml 或基于注释的配置时,TDD 一个 spring 应用程序会更容易吗?
当您编写需要 SpringApplicationContext
和数据库的测试时,这是一个集成测试,而不是单元测试。单元测试的一般规则是:
另一方面,集成测试:
因此,对于 TDD,您尝试构建可以在没有 Spring 的情况下创建的 bean。以您不必启动 Hibernate 或数据库的方式编写它们。这里的主要原因是 TDD 需要每天运行数百次单元测试。如果它们运行时间超过 10 秒,您最终会觉得等待测试完成是在浪费时间。
下一个问题通常是如何以这种方式测试任何有用的东西。好吧,这样想:Hibernate 有效。它已经有许多单元测试。测试hibernate是浪费时间。所以你应该在你的应用程序中创建一个层,从代码中完全隐藏 Hibernate。
不是连线 a FooDao
,而是连线IFooDao
具有byId()
方法并返回 POJO 的 an。在单元测试中,您可以创建一个返回单个实例的模拟实现。
当您想知道实际是否FooDao
有效时,请为调用byId()
几次的内容编写集成测试。
但要避免“从 DAO 获取对象,处理对象,再次使用 DAO 保存对象”。这是三个不同的测试(两个 IT,一个 UT)。