测试 JPA 的最佳方式?
Best way to test JPA?
我正在做 JPA 项目,我想进行单元测试(虽然需要数据库,但在这种情况下,它更像是集成测试。)
测试 JPA 项目的最佳方法是什么? jUnit 能做到吗?还有其他更好的方法吗?
非常感谢
您提供的关于您正在使用的 tools/frameworks 的信息有限,而且是一个非常笼统的问题,但我会就您提出的要点给出快速答复。然而,这些只是一些建议,因为我相信您需要做更多的工作才能找出最适合您的特定项目的方法。
Junit 允许您使用特定参数定位您的 class 方法并检查 return 值。 returned 值可能是一个实体,该实体应具有特定值的特定字段、具有特定预期字段值的实体列表、异常等(无论您使用什么方法)。您可以在引入新功能时 运行 您的测试,并在开发过程中重新 运行 它们以测试回归。您可以轻松地测试边缘情况和非标称的东西。在 Java SE/EE 中启动 Junit 和 运行ning 是非常简单的,因此这可能是您坚持测试的好选择。这是我用来测试新功能的更快方法之一。
Spring/MVC – 使用 MVC 框架当然很有用。我用过JSF/Primefaces。但这主要是因为该应用程序是一个 JSF 应用程序,并且此类开发测试使人们相信“模型”层提供了框架其余部分所需的内容。因此,这为 model/JPA/DB 层提供了一些信心(很高兴看到交付的数据),但没有提供您可能期望从 Junit 获得的灵活、灵活和有针对性的测试。
我认为当你在 JUnit 上取得一些进展时,Dbunit 可能是值得关注的东西。
参见 http://dbunit.sourceforge.net/
DbUnit is a JUnit extension (also usable with Ant) targeted at
database-driven projects that, among other things, puts your database
into a known state between test runs. This is an excellent way to
avoid the myriad of problems that can occur when one test case
corrupts the database and causes subsequent tests to fail or
exacerbate the damage.
我正在做 JPA 项目,我想进行单元测试(虽然需要数据库,但在这种情况下,它更像是集成测试。)
测试 JPA 项目的最佳方法是什么? jUnit 能做到吗?还有其他更好的方法吗?
非常感谢
您提供的关于您正在使用的 tools/frameworks 的信息有限,而且是一个非常笼统的问题,但我会就您提出的要点给出快速答复。然而,这些只是一些建议,因为我相信您需要做更多的工作才能找出最适合您的特定项目的方法。
Junit 允许您使用特定参数定位您的 class 方法并检查 return 值。 returned 值可能是一个实体,该实体应具有特定值的特定字段、具有特定预期字段值的实体列表、异常等(无论您使用什么方法)。您可以在引入新功能时 运行 您的测试,并在开发过程中重新 运行 它们以测试回归。您可以轻松地测试边缘情况和非标称的东西。在 Java SE/EE 中启动 Junit 和 运行ning 是非常简单的,因此这可能是您坚持测试的好选择。这是我用来测试新功能的更快方法之一。
Spring/MVC – 使用 MVC 框架当然很有用。我用过JSF/Primefaces。但这主要是因为该应用程序是一个 JSF 应用程序,并且此类开发测试使人们相信“模型”层提供了框架其余部分所需的内容。因此,这为 model/JPA/DB 层提供了一些信心(很高兴看到交付的数据),但没有提供您可能期望从 Junit 获得的灵活、灵活和有针对性的测试。
我认为当你在 JUnit 上取得一些进展时,Dbunit 可能是值得关注的东西。 参见 http://dbunit.sourceforge.net/
DbUnit is a JUnit extension (also usable with Ant) targeted at database-driven projects that, among other things, puts your database into a known state between test runs. This is an excellent way to avoid the myriad of problems that can occur when one test case corrupts the database and causes subsequent tests to fail or exacerbate the damage.