此简单方法将从数据库中检索到的Clob
的所有内容返回为String
。
如何正确测试/模拟它,保证它总是返回Clob
参数的全部内容(假设它的大小不会高于整数)?
import java.sql.Clob;
public class ClobUtils {
public static String clobToString(Clob clob) throws Exception {
if(clob.length() > Integer.MAX_VALUE) {
throw new Exception("Clob is too big to be handled by the application.");
}
// Assumes that Clob content can fit in the String
return clob.getSubString(1, Long.valueOf(clob.length()).intValue());
}
}
答案 0 :(得分:1)
您不必测试getSubString
或length
。它已经被来自sun和您的数据库提供商的人测试过了。您应该测试的是您正确使用它们。显然你不能通过模拟clob来做到这一点,因为你不会测试任何东西,或者你必须实现你自己的jdbc部分(因此你会测试错误的实现)。
你应该做的是做集成测试。设置数据库,用已知数据填充它,运行ClobUtils并检查它是否返回预期的字符串。是的,设置好的自动化集成测试不是直截了当也不是很容易,但可以通过合理的努力来实现。