Java 使用不在类路径中的类的单元测试方法
我有一个方法,用于检查给定的类是否是特定类型的实例。 例如,假设myClass是DBClass的一个实例,我希望返回true。 DBClass由客户在属性文件中动态定义。 因此,我正在读取属性文件,获取DBClass超类型,加载它并检查给定的类(即myClass)是否是DBClass的实例 有一件事是可以肯定的,我试图检查超类型的DBCLass在运行测试用例时不会出现在我的类路径中,因为这个DBCLass是动态的,并且是特定于客户的 我不确定如何直接测试或覆盖它。我不确定是否需要模拟属性文件 我正在使用Junit和JMock 关于测试方法的任何建议。 方法是这样写的Java 使用不在类路径中的类的单元测试方法,java,unit-testing,properties,mocking,junit4,Java,Unit Testing,Properties,Mocking,Junit4,我有一个方法,用于检查给定的类是否是特定类型的实例。 例如,假设myClass是DBClass的一个实例,我希望返回true。 DBClass由客户在属性文件中动态定义。 因此,我正在读取属性文件,获取DBClass超类型,加载它并检查给定的类(即myClass)是否是DBClass的实例 有一件事是可以肯定的,我试图检查超类型的DBCLass在运行测试用例时不会出现在我的类路径中,因为这个DBCLass是动态的,并且是特定于客户的 我不确定如何直接测试或覆盖它。我不确定是否需要模拟属性文件 我
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);
公共布尔isDBClass(最终类myClass){
//下面一行读取属性文件并获取db父类的类名。
字符串dbSuperClass=PropertiesReader.PropertyEnum.DB_CLASS_PARENT.toString();
//如果myClass是dbSuperClass的子类,则返回true,否则返回false。
返回loadClass(dbSuperClass).isAssignableFrom(myClass);
}您的方法的责任是:
- 获取字符串
- 将其传递给名为loadClass()的方法
- 使用提供的输入参数调用isAssignableFrom()
- 返回结果
您可能需要进行一些重构,以使loadClass成为可模拟的,但这种方法会将这个特定的方法组合起来。我目前已经找到了一种解决方法。
我提供了一个虚拟属性文件,它引用了我的类路径中的虚拟类 我认为你不能测试不在类路径中的东西,clr应该如何知道类是什么样子的。@Damokles,对于不在类路径中的类,我可以在类路径中添加一个伪类。但是在属性文件中,DB_CLASS_PARENT属性将引用真实的类。不管怎么说,让它成为Dummy课堂的参考?啊,我想我误解了你的问题。谢谢。模仿这种方法能给我覆盖范围吗?目前,我已经通过重写并返回false来删除这个方法。但我没有得到保险。