У меня есть объект Singleton/ Factory, который я бы хотел написать для теста JUnit. Метод Factory определяет, какой экземпляр реализуется для создания экземпляра на основе имени класса в файле свойств в пути к классам. Если файл свойств не найден или файл свойств не содержит ключ класса, класс будет создавать экземпляр класса реализации по умолчанию.
Поскольку Factory хранит статический экземпляр Singleton для использования после его создания, чтобы иметь возможность протестировать логику "failover" в методе Factory, мне нужно будет запускать каждый метод тестирования в другом Загрузчик классов.
Есть ли способ с JUnit (или с другим модулем тестирования модулей)?
edit: вот какой код Factory, который используется:
private static MyClass myClassImpl = instantiateMyClass();
private static MyClass instantiateMyClass() {
MyClass newMyClass = null;
String className = null;
try {
Properties props = getProperties();
className = props.getProperty(PROPERTY_CLASSNAME_KEY);
if (className == null) {
log.warn("instantiateMyClass: Property [" + PROPERTY_CLASSNAME_KEY
+ "] not found in properties, using default MyClass class [" + DEFAULT_CLASSNAME + "]");
className = DEFAULT_CLASSNAME;
}
Class MyClassClass = Class.forName(className);
Object MyClassObj = MyClassClass.newInstance();
if (MyClassObj instanceof MyClass) {
newMyClass = (MyClass) MyClassObj;
}
}
catch (...) {
...
}
return newMyClass;
}
private static Properties getProperties() throws IOException {
Properties props = new Properties();
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(PROPERTIES_FILENAME);
if (stream != null) {
props.load(stream);
}
else {
log.error("getProperties: could not load properties file [" + PROPERTIES_FILENAME + "] from classpath, file not found");
}
return props;
}