JUnit, Mockito и Spring ApplicationContext: проблема с издевательством над свойствомJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 JUnit, Mockito и Spring ApplicationContext: проблема с издевательством над свойством

Сообщение Anonymous »

Описание проблемы: у меня возникла проблема с настройкой макета для определенного компонента Spring, чтобы он возвращал правильное расположение ресурса макетного теста в моем блоке разработки, а не корень веб-приложения среды выполнения. Я уверен, что делаю что-то глупое во время рефакторинга. Надеюсь, кто-нибудь это увидит.

Я использую Quartz для выполнения задания через Spring. Задание Quartz работает нормально, и контекст приложения Spring работает нормально. Остается только подключить свойство конфигурации для места тестирования или среды выполнения, где расположены веб-ресурсы. :

JUnit 4, Spring 3.1, Quartz, Java 8, Mockito

Интерфейс:

public interface ITitle {
/**
* Gets the root of the application.
* @return location String
*/
public String getRuntimeLocation();
}


Реализация:

@Component("Title")
public class Title implements ITitle, ApplicationContextAware {

private String location;

/**
* Gets the root of the application.
* @return location String
*/
public String getRuntimeLocation() {
String location = "";

config = getConfig();
log.debug("Class Title --- Method getRuntimeLocation -- config is " + config );

location = config.getRuntimeLocation();
log.debug("Class Title --- Method getRuntimeMethod -- runtime location is " + location );

return location;
}
}


Модульный тест

import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.generators.analytics.serialised.ITitle;

import java.io.File;

import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.when;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath*:/WEB-INF/conf/analytics-context.xml"
})
public class GeneratorTest {

private AnalyticsGenerator generator;

@Mock
private IConfig config;

@Mock
private ApplicationContext applicationContext;

@Mock
private ITitle title;

// Set a logger
private static Logger log = LoggerFactory.getLogger(GeneratorTest.class);
private JobExecutionContext job;

/**
* Initialises the test parameters.
*/
@Before
public void setUp() throws Exception {
//create a generator object
generator = new AnalyticsGenerator();

MockitoAnnotations.initMocks(this);

when(applicationContext.getBean("Query")).thenReturn(query);
when(applicationContext.getBean("Config")).thenReturn(config);

when(config.getRuntimeLocation()).thenReturn(“/Users/me/dev/workarea/");

generator.executeInternal(ctx);
}

/**
* Expected: Json exists
*/
@Test
public void testThatExecuteInternalCreatesAJsonFile() throws JobExecutionException {

generator.executeInternal(job);

File returnedJson = new File("classpath:/google-analytics.json");

Assert.assertNotNull("The JSON file does not exist", returnedJson );
}

/**
* Remove objects from memory.
*/
@After
public void tearDown() throws Exception {
generator = null;
}


}

Файл Spring XML


















После запуска теста я получаю это в журнале:
11:51:43.020 [main] DEBUG com.generators.analytics.serialised.Title - Class Title --- Method getConfig -- applicationContext is org.springframework.context.support.GenericApplicationContext@57f23557: startup date [Tue Jan 24 11:51:31 GMT 2017]; root of context hierarchy
11:51:43.020 [main] DEBUG com.generators.analytics.serialised.Title - Class Title --- Method getConfig -- config is com.generators.analytics.Config@13d9cbf5
11:51:43.020 [main] DEBUG com.generators.analytics.serialised.Title - Class Title --- Method getRuntimeLocation -- config is com.generators.analytics.Config@13d9cbf5
11:51:43.020 [main] DEBUG com.generators.analytics.serialised.Title - Class Title --- Method getRuntimeMethod -- runtime location is /data/runtime/web/


Вопрос в том, есть ли что-то очевидное, что я делаю неправильно, чтобы получить намеченный путь /Users/me/dev/workarea/?

Думаю, мне нужно провести рефакторинг, чтобы извлечь местоположение из метода? Я не знаю, как реорганизовать этот конкретный шаг.

when(config.getRuntimeLocation()).thenReturn(“/Users/me/dev/workarea/");


Подробнее здесь: https://stackoverflow.com/questions/418 ... a-property
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»