我应该如何对调用MySQL存储过程的Java进行单元测试?

Cod*_*rer 8 java mysql unit-testing

我正在编写一个简单的应用程序,它将读取一些记录并将它们插入数据库中.我编写了一个处理插入逻辑的存储过程,并计划单独测试它.现在,我想为获取业务对象并将其传递给存储过程调用的逻辑部分编写一个良好的单元测试.

我想做的是传递数据库连接的模拟,然后声明调用是使用预期的参数值:

Connection dbConnection = makeMockConnection();  // how?
MyObjectWriter writer = new MyObjectWriter(dbConnection);
writer.write(someSampleObject);
// somehow assert that dbConnection called
// `sp_saveMyObject` with param values x, y, and z
Run Code Online (Sandbox Code Playgroud)

然而,似乎有很多工作在里面挖掘java.sql.Connection,了解它是如何工作的,然后模拟所有结果.有没有一个测试库可以为我做这一切?我是以错误的方式来的吗?

Aut*_*ike 2

您可以使用模拟存储过程创建内存中 HSSQL 数据库。模拟存储过程将在表中插入一行以显示它的运行情况以及它的参数是什么。运行被测试的代码,然后查看数据库以查看发生了什么。