我在spring boot中创建了一个小型Web应用程序。我是TestNG的新手。我试图用testng测试我的服务,它调用dao进行数据库操作。我正在尝试使用内存数据库HSQL
。
以下是我的UserService
@Service
class UserServiceImpl implements UserService
{
public void save(User user)
{
userDao.save(user);
}
public User update(user)
{
userDao.update(user);
}
}
以下是我的UserTest
课程
@Test
class UserTest
{
?
}
使用 HSQL 在 TestPro 中使用 DataProvider save和update
方法有什么好方法>?如果需要更多关于问题的信息,请告诉我。)
非常感谢您的回复!!
答案 0 :(得分:2)
如果您只想测试dao是否被正确调用,请使用模拟框架进行模拟(我选择Mockito)并验证您的服务是否调用了正确的方法。这是更多"单位"比如,因为你的测试反映了道和服务的明确分离。
如果您对创建/加载实例等真正的数据库通信感兴趣,可以使用内存数据库(如h2),让您的dao针对该数据库运行。这变得更像是一个集成测试,但也可能是有用的。
无论哪种方式,您都可以设置一个关注数据源和模拟的测试应用程序上下文。
答案 1 :(得分:0)
Acolyte提供JDBC驱动程序&专为此目的而设计的工具(模拟,测试......):https://github.com/cchantep/acolyte
已经在几个开源项目(Anorm,Youtube Vitess,......)中使用过,无论是使用vanilla Java还是使用Scala DSL:
handler = handleStatement.withQueryDetection(...).
withQueryHandler(/* which result for which query */).
withUpdateHandler(/* which result for which update */).
// Register prepared handler with expected ID 'my-unique-id'
acolyte.Driver.register("my-unique-id", handler);
// then ...
Connection con = DriverManager.getConnection(jdbcUrl);
// ... Connection |con| is managed through |handler|
注意:我是Acolyte的作者。