Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

TODO

...

Beroenden (Wiremock, Bean Matchers m.m.)

...

AbstractAppTest

...

ResourceLoader extension

...

Denna starter tillhandahåller stödfunktionalitet och beroenden för att skriva tester i tjänster, bl.a.:

App-tester

För app-tester tillhandahåller startern ett enkelt sätt att starta upp en WireMock-instans på en slumpmässig, ledig port:

Code Block
languagejava
@WireMockAppTestSuite(                                        [1]
    files = "classpath:/MyFirstAppTest/",                     [2]
    classes = Application.class                               [3]
)
class MyFirstAppTest extends AbstractAppTest {                [4]

    @Test
    void test1_successful() throws Exception {
        setupCall()
            .withServicePath("/path/to/endpoint")             [5]
            .withHttpMethod(HttpMethod.POST)                  [6]
            .withRequest("some-request.json")                 [7]
            .withExpectedResponseStatus(HttpStatus.OK)        [8]
            .withExpectedResponse("expected-response.json")   [9]
            .sendRequestAndVerifyResponse();
    }
}

[1] Annotering som anger att WireMock ska startas upp för aktuell testklass.
[2] Pekar ut var WireMock hittar resurser (mappningar etc.).För varje test-metod kommer metodnamnet att byggas på denna sökväg, t.ex. .../MyFirstAppTest/test1_successful/....
[3] Pekar ut vilken klass som ska användas för att ladda context:en för testet. Kommer oftast att vara tjänstens applikationsklass, d.v.s. den klass som innehåller en main-metod och som används för att starta tjänsten.
[4] Test-basklassen AbstractAppTest innehåller funktionalitet för att bl.a. enkelt kunna sätta upp ett testfall, mot en förväntad endpoint ([5]) med en viss HTTP-metod ([6]), ett request ([7]), en förväntad HTTP-status ([8]) och ett förväntat svar ([9]).

(info) Rekommenderat är att placera app-tester under src/integration-test/java och deras resurser under src/integration-test/resources.


ResourceLoaderExtension

Ramverket tillhandahåller en JUnit-extension för att enkelt kunna läsa in resurser i sina tester:

Code Block
languagejava
@ExtendWith(ResourceLoaderExtension.class)                            [1]
class MyTest {

    @Test
    void test1(@Load("/somefile.txt") String s) {                     [2]
        ...
    }

    @Test
    void test2(@Load("/person.json") @DeserializeJson Person p) {     [3]
        ...
    }
    
    @Test
    void test3(@Load("/settings.xml") @DeserializeXml Settings s) {   [4]
        ...
    }
}

[1] Aktiverar stöd för övriga annoteringar ([2], [3] och [4]) för att läsa in resurser.
[2] @Load-annoteringen används för att peka ut vilken resurs på classpath:en som ska läsas in i den annoterade parametern.
[3] @DeserializeJson-annoteringen används i kombination med @Load för att läsa in en resurs och försöka deserialisera den från JSON till den annoterade parametern.
[4] @DeserializeXml-annoteringen används i kombination med @Load för att läsa in en resurs och försöka deserialisera den från XML till den annoterade parametern.