我有一个带有MySQL数据库的简单REST应用程序,一切正常,但是在测试时我们需要创建一个虚拟对象并对其进行测试,还是通过Mock数据库进行测试? 虚拟对象具有相当大的构造函数和嵌套类,这需要大量工作。
答案 0 :(得分:1)
IMO,除非您正在测试连接性处理,否则使用模拟数据库毫无意义。例如,如果数据库连接断开等情况,我的应用程序的行为如何。
对于测试SQL,您将不会比对将在生产中使用的实际数据库进行测试更好。如果您使用另一个数据库(例如H2)作为替代数据库,请确保您了解要测试的数据库驱动程序和数据库与生产部署不同,这意味着在使用此设置的测试中可能不会发现潜在的错误。
对于测试数据处理,您也可以使用某种模拟,但是,如果您总是想尽可能多地使用将在生产环境中使用的实际数据库,那将是一个更好的选择。
如果您将Hibernate用作ORM提供程序,那么在设置集成测试时,可以让其执行DML脚本来加载数据以进行测试。
答案 1 :(得分:0)
如果使用Spring Boot,那么H2是内存数据库中流行的一种。 Spring Boot对H2具有很好的集成性。
答案 2 :(得分:0)
对于集成测试,您应该考虑使用内存中的数据库,例如H2。
H2对IBM DB2,Apache Derby,HSQLDB,Microsoft SQL Server,MySQL,Oracle和PostgreSQL支持compatibility modes。要使用MySQL模式,请使用如下所示的数据库URL(有关更多详细信息,请参考documentation):
jdbc:h2:~/test;MODE=MySQL;DATABASE_TO_LOWER=TRUE