如何将Clob转换为字符串单元测试?

时间:2015-04-27 17:45:22

标签: java unit-testing junit mocking

此简单方法将从数据库中检索到的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());
    }

}

1 个答案:

答案 0 :(得分:1)

您不必测试getSubStringlength。它已经被来自sun和您的数据库提供商的人测试过了。您应该测试的是您正确使用它们。显然你不能通过模拟clob来做到这一点,因为你不会测试任何东西,或者你必须实现你自己的jdbc部分(因此你会测试错误的实现)。

你应该做的是做集成测试。设置数据库,用已知数据填充它,运行ClobUtils并检查它是否返回预期的字符串。是的,设置好的自动化集成测试不是直截了当也不是很容易,但可以通过合理的努力来实现。