我有一个方法用于检查给定的类是否是特定类型的实例。 比方说,myClass是DBClass的一个实例,我想返回true。 DBClass由客户在属性文件中动态定义。 所以我正在读取属性文件,获取DBClass超类型,加载它并检查给定的类(即myClass)是否是DBClass的实例。
有一点可以肯定的是,我尝试检查超类型的DBCLass在运行测试用例时不会出现在我的类路径中,因为这个dbClass是动态的和客户特定的。
我不确定如何直接测试或覆盖它。我不确定是否需要模拟属性文件?
我正在使用Junit和JMock。
有关测试方法的任何建议。 方法写得像这样。
public boolean isDBClass (final Class<?> myClass) {
//Following line reads the properties file and get the class name for db parent class.
String dbSuperClass = PropertiesReader.PropertyEnum.DB_CLASS_PARENT.toString();
// if myClass is subclass of dbSuperClass return true, false otherwise.
return loadClass(dbSuperClass).isAssignableFrom(myClass);
}
答案 0 :(得分:0)
您的方法的职责是:
如果您可以模拟loadClass方法,那么您可以验证这些职责,而无需实际进行任何类加载。
您可能需要进行一些重构才能使loadClass可以进行模拟,但是这种方法会将这种特定方法单元化。
答案 1 :(得分:0)
我现在已经找到了解决方法。 我提供了一个虚拟属性文件,它引用了我的类路径中的虚拟类。