javax.ws.rs REST-тестирование по цели - где взять или установить адрес сервера? - PullRequest
0 голосов
/ 28 апреля 2018

Где я тестирую модуль REST, созданный в javax.ws.rs и использующий target () для URL, как в https://stackoverflow.com/a/28726499/715269,, и я не знаю, как установить серверную часть URL ,

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

Если я не выберу сервер для цели:

String targetUrl = "/api/v1/documentTypes";
try (Response response = target(targetUrl).request().post(Entity.json(simpleJson))) {

И в ответ ищите URI, я вижу, что там установлена ​​какая-то серверная часть (http://localhost:9998/),, но я не знаю, откуда она, и этот имитированный сервер не знает функцию API из targetUrl строка.

Как мне написать эту часть модульного теста, чтобы он выполнялся повсеместно?

Я думаю, что, возможно, переопределение метода configure () могло бы помочь, но я не уверен.

1 Ответ

0 голосов
/ 28 апреля 2018

Я нашел!

Тестовый класс расширяется от класса JerseyTest.

public class DocumentTypesTest extends JerseyTest {

В этом классе есть метод configure (), который необходимо переопределить:

@Override
protected Application configure() {
    return new ResourceConfig(DocumentTypes.class);
}

И новый переопределенный метод должен возвращать конфигурацию класса, в котором лежат протестированные функции API.

Это может вызвать недопонимание: ваша функция API может быть сгруппирована по 'value =' из нескольких классов. И вы (как и я) можете создать один и тот же тестовый класс для всех функций API группы. Это не сработает! . Вы должны создать отдельный тестовый класс для каждого класса методов API.

...