Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连接到数据库的RESTAPI的Junit测试用例_Java_Rest_Unit Testing_Junit_Automated Tests - Fatal编程技术网

Java 连接到数据库的RESTAPI的Junit测试用例

Java 连接到数据库的RESTAPI的Junit测试用例,java,rest,unit-testing,junit,automated-tests,Java,Rest,Unit Testing,Junit,Automated Tests,我有一个JavaREST服务,它与数据库交互,执行一些操作并返回数据 我正在尝试为这些API编写测试用例 我正在尝试使用下面的链接作为参考来实现这一点 在这里,对数据库的调用被抑制,dto用虚构的值进行模拟 是否有另一种方法可以让我们在不与数据库对话的情况下运行查询(可能是内存中的数据库?) 任何代码示例或参考都会有很大帮助。HSQLDB是我熟悉的内存数据库。这里展示的示例针对hibernate和JPA使用的HSQLDB 然而,我认为有必要问一下,在您的情况下,为什么您更喜欢连接内存中的db而

我有一个JavaREST服务,它与数据库交互,执行一些操作并返回数据

我正在尝试为这些API编写测试用例

我正在尝试使用下面的链接作为参考来实现这一点

在这里,对数据库的调用被抑制,dto用虚构的值进行模拟

是否有另一种方法可以让我们在不与数据库对话的情况下运行查询(可能是内存中的数据库?)


任何代码示例或参考都会有很大帮助。

HSQLDB是我熟悉的内存数据库。这里展示的示例针对hibernate和JPA使用的HSQLDB

然而,我认为有必要问一下,在您的情况下,为什么您更喜欢连接内存中的db而不是模拟db? 它归结为您试图实现的测试单元/集成的范围。 您想在rest层中测试制造逻辑是什么?嘲笑就足够了。 您是否正在尝试测试rest如何处理数据访问行为,例如db错误处理等,而在内存中可能会稍好一些。
您正在测试的东西是否依赖于数据设置/测试数据设置,在这种情况下,内存数据库中的数据设置可能更接近,因为您可以使用相同/类似的sql创建在内存数据库中进行测试

HSQLDB是我熟悉的内存数据库之一。这里展示的示例针对hibernate和JPA使用的HSQLDB

然而,我认为有必要问一下,在您的情况下,为什么您更喜欢连接内存中的db而不是模拟db? 它归结为您试图实现的测试单元/集成的范围。 您想在rest层中测试制造逻辑是什么?嘲笑就足够了。 您是否正在尝试测试rest如何处理数据访问行为,例如db错误处理等,而在内存中可能会稍好一些。
您正在测试的东西是否依赖于数据设置/测试数据设置,在这种情况下,内存数据库中的数据设置可能更接近,因为您可以使用相同/类似的sql创建在内存数据库中进行测试

对于一个纯HashMap解决方案,类似这样的方法是可行的,但这样会使您失去对SQL查询功能的访问(除非您也模拟查询)

此后,您将使用spring为您插入SQL脚本:

@ActiveProfiles("test")
@SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)
 @SqlGroup({
    @Sql(statements = "DROP SCHEMA PUBLIC CASCADE"),
    @Sql(scripts = "classpath:yourGeneratedSQL.sql"),
})

公共类DAOIgrationTest{

对于一个纯HashMap解决方案,类似这样的方法可以工作,但是您可能会失去对SQL查询功能的访问(除非您也模拟查询)

此后,您将使用spring为您插入SQL脚本:

@ActiveProfiles("test")
@SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)
 @SqlGroup({
    @Sql(statements = "DROP SCHEMA PUBLIC CASCADE"),
    @Sql(scripts = "classpath:yourGeneratedSQL.sql"),
})

公共类集成测试{

谢谢!但是我们正在使用jdbc作为dao层。可以将其包含在测试范围内吗?是的,HSQLDB也可以与jdbc一起工作。您只需在上找到更多具体的示例,例如HSQLDB jdbc示例。您肯定希望它包含在测试范围内。我想您首先必须在测试中为dao创建一个适当的抽象版本是HSQLDBDAO实现,而真正的版本是您的DBDAO(例如oracle/sybase等)谢谢!但是我们正在使用jdbc作为dao层。可以将其包含在测试范围内吗?是的,HSQLDB也可以与jdbc一起工作。您只需在上找到更多具体的示例,例如HSQLDB jdbc示例。您肯定希望它位于测试范围内。我想您首先必须在测试范围内为dao创建一个适当的抽象ion是一个HSQLDBDAO实现,而真正的是您的DBDAO(例如oracle/sybase等)
@ActiveProfiles("test")
@SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)
 @SqlGroup({
    @Sql(statements = "DROP SCHEMA PUBLIC CASCADE"),
    @Sql(scripts = "classpath:yourGeneratedSQL.sql"),
})