gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:11:42 26 4
gpt4 key购买 nike

我有一个方法,用于检查给定的类是否是特定类型的实例。 比如说 myClass 是 DBClass 的一个实例,我想返回 true。 DBClass 由客户在属性文件中动态定义。 因此,我正在读取属性文件,获取 DBClass 父类(super class)型,加载它并检查给定的类(即 myClass)是否是 DBClass 的实例。

有一件事是可以肯定的是,我试图检查父类(super class)型的 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 方法,那么您可以验证这些职责,而无需实际执行任何类加载。

您可能需要进行一些重构才能使 loadClass 可模拟,但该方法将统一此特定方法。

关于java - 使用不在类路径中的类的单元测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6593611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com