繁体   English   中英

使用不在类路径中的 class 的单元测试方法

[英]Unit Testing method which uses class which is not in classpath

我有一种方法用于检查给定的 class 是否是特定类型的实例。 比如说 myClass 是我想返回 true 的 DBClass 的一个实例。 DBClass 由客户在属性文件中动态定义。 所以我正在读取属性文件,获取 DBClass 超类型,加载它并检查给定的 class(即 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); 

}

您的方法的职责是:

  • 得到一个字符串
  • 将其传递给名为 loadClass() 的方法
  • 使用提供的输入参数调用 isAssignableFrom()
  • 返回结果

如果您可以模拟 loadClass 方法,那么您可以验证这些职责,而无需实际执行任何 class 加载。

您可能需要进行一些重构以使 loadClass 可以模拟,但这种方法会将这个特定方法统一起来。

好吧,我目前找到了解决方法。 我提供了一个虚拟属性文件,它引用了我的类路径中的虚拟 class。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM