@Test
  void queryParamsInPathExtract() throws Exception {
    assertThat(parseAndValidateMetadata(WithQueryParamsInPath.class, "none").template())
        .hasUrl("/")
        .hasQueries();

    assertThat(parseAndValidateMetadata(WithQueryParamsInPath.class, "one").template())
        .hasPath("/")
        .hasQueries(entry("Action", asList("GetUser")));

    assertThat(parseAndValidateMetadata(WithQueryParamsInPath.class, "two").template())
        .hasPath("/")
        .hasQueries(entry("Action", asList("GetUser")), entry("Version", asList("2010-05-08")));

    assertThat(parseAndValidateMetadata(WithQueryParamsInPath.class, "three").template())
        .hasPath("/")
        .hasQueries(
            entry("Action", asList("GetUser")),
            entry("Version", asList("2010-05-08")),
            entry("limit", asList("1")));

    assertThat(parseAndValidateMetadata(WithQueryParamsInPath.class, "twoAndOneEmpty").template())
        .hasPath("/")
        .hasQueries(
            entry("flag", new ArrayList<>()),
            entry("Action", asList("GetUser")),
            entry("Version", asList("2010-05-08")));

    assertThat(parseAndValidateMetadata(WithQueryParamsInPath.class, "oneEmpty").template())
        .hasPath("/")
        .hasQueries(entry("flag", new ArrayList<>()));

    assertThat(parseAndValidateMetadata(WithQueryParamsInPath.class, "twoEmpty").template())
        .hasPath("/")
        .hasQueries(entry("flag", new ArrayList<>()), entry("NoErrors", new ArrayList<>()));
  }
Tests interfaces defined per {@link Contract.Default} are interpreted into expected {@link feign
.RequestTemplate template} instances.
core/src/test/java/feign/DefaultContractTest.java