Метод модульного тестирования, который использует класс, которого нет в classpath - PullRequest
3 голосов
/ 06 июля 2011

У меня есть метод, который используется для проверки, является ли данный класс экземпляром перикулярного типа.Скажем, например, myClass является экземпляром DBClass, который я хочу вернуть true.И DBClass динамически определяется клиентом в файле свойств.Итак, я читаю файл свойств, получаю супертип DBClass, загружаю его и проверяю, является ли данный класс (то есть, myClass) экземпляром DBClass.

И одно точно - это DBCLass, который я пытаюсьпроверка на наличие супертипа не будет присутствовать в моем classpath при запуске тестового примера, так как этот 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); 

}

Ответы [ 2 ]

0 голосов
/ 08 июля 2011

Ну, я нашел способ обойти в настоящее время. Я предоставляю файл фиктивных свойств, который ссылается на фиктивный класс, который находится в моем пути к классам.

0 голосов
/ 06 июля 2011

Обязанности вашего метода:

  • получить строку
  • передать ее методу loadClass ()
  • вызовом isAssignableFrom () с предоставленным входным параметром
  • вернуть результат

Если бы вы могли насмехаться над методом loadClass, вы могли бы проверить эти обязанности, фактически не выполняя никакой загрузки класса.

Возможно, вам придется сделать немногорефакторинг для того, чтобы сделать loadClass способным к мошенничеству, но такой подход объединяет этот конкретный метод.

...