Существует микросервис, выполненный с использованием Spring Boot. Он состоит из Jetty, Jersey, Jackson и Liquibase. Одной из задач этой службы является получение некоторых данных через REST и обратный ответ. Эта операция проходит через следующие единицы:Тестирование Весенняя обувь Проблемы с ресурсами REST
MyResource
,@Component
REST с JAX-RS аннотаций, который принимает данные и попросить@Autowired MyService
для ответа.MyService
,@Component
сервис с@Autowired MyResource
, чтобы попросить его ответить.MyResource
, простой интерфейс@JpaRepository
Это приложение работает отлично, но теперь мне нужно добавить несколько тестов для каждого модуля. Обычно я использую Mockito для тестирования единиц, поэтому я тестирую свое обслуживание с издевательством MyRepository (метод Mockito @Mock annotation + when()). Я хочу проверить MyResource.java таким же образом.
Я пытался использовать TestRestTemplate способ тестирования с пружинным загрузки стартер-тест и мой тестовый класс выглядит следующим образом:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebIntegrationTest(randomPort = true)
public class MyResourceTest {
@Value("${local.server.port}")
private int port;
private String getBaseUrl() {
return "http://localhost:" + port;
}
@Test
public void test() {
final TestRestTemplate restTemplate = new TestRestTemplate();
assertEquals(restTemplate.postForEntity(getBaseUrl() + "/test", null, ResponseObject.class).getBody(), new ResponseObject());
}
}
И есть две проблемы. Сначала - когда мой тест запущен, они запускают все весеннее приложение, поэтому мои скрипты linibase пытаются найти базу данных, и это очень длительный процесс. Во-вторых - я не могу заменить класс MyService прокси-сервером Mockito.
Я попытался найти руководство по лучшим методам тестирования приложений REST для загрузки весеннего ботинка, и я нашел способ, основанный на MockMvc, но, похоже, не запускайте сервер для запуска теста. Можете ли вы поделиться своим опытом тестирования ресурса REST весной?
В пуль 2 и 3, не значит 'MyRepository'? –