Тест Джерси с использованием ResourceConfig только для одного метода тестирования - PullRequest
0 голосов
/ 17 июня 2019

В настоящее время я пишу тесты для простого веб-приложения на основе джерси и сталкиваюсь со странной проблемой, когда разные методы тестирования в одном классе используют разные конфигурации. Конкретно у меня есть класс обслуживания:

@Path("service")
public class WebService {

  @Inject
  private ApplicationData data;

  @GET
  @Path("/single/{id}")
  public Result singleDo(@PathParam("id") String id) {
    logger.info("appData: " + data.getClass().getCanonicalName());
    // actually do things
  } 

  @POST
  @Path("/bulk")
  public Result[] bulkDo(String[] ids) {
    logger.info("appData: " + data.getClass().getCanonicalName());
    // actually do things
  }

Этот класс в настоящее время работает в живой среде. Для обработки разных переменных состояния между обучением и тестированием у меня есть два разных класса ApplicationData, ApplicationData и TestApplicationData, которые являются подклассом ApplicationData. Мой тестовый класс:

public class TestWebService extends JerseyTest {
  @Override
  protected Application configure() {
    ResourceConfig rc = new WebApplication(new TestApplicationData());
    rc.register(WebService.class);
    return rc;
  }

  @Test
  public void testSingle() {
    target("/service/single/1234").request().get();
    // this uses TestApplicationData, according to logs
  }

  @Test
  public void testBulk() {
    String[] list = new String[1];
    list[0] = "1234";
    target("/service/bulk").request().post(Entity.entity(list, MediaType.APPLICATION_JSON);
    // this uses ApplicationData, according to logs, and does not have information from TestApplicationData
  }
}

Мне не ясно, как или почему эти два метода используют разные экземпляры ApplicationData или как второй метод даже получает доступ к не тестовому экземпляру.

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

...