Описание проблемы: у меня возникла проблема с настройкой макета для определенного компонента 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
JUnit, Mockito и Spring ApplicationContext: проблема с издевательством над свойством ⇐ JAVA
Программисты JAVA общаются здесь
1772496610
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/");
Подробнее здесь: [url]https://stackoverflow.com/questions/41829094/junit-mockito-and-spring-applicationcontext-trouble-mocking-a-property[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия