Skip to content

Instantly share code, notes, and snippets.

@tkonsta
Last active April 24, 2020 13:25
Show Gist options
  • Save tkonsta/aaa84feb6ebdc7a4aae053ef41b20054 to your computer and use it in GitHub Desktop.
Save tkonsta/aaa84feb6ebdc7a4aae053ef41b20054 to your computer and use it in GitHub Desktop.
Notes taken during the talk given by Sandra Parsick

Notizen aus dem Talk "Ich packe meinen Testtoolkoffer und nehme mit…" von Sandra Parsic


JUnit 5 Features

@EnabledOn... um Tests nur unter bestimmten Umständen laufen zu lassen @EnabledOnOs(), @EnabledOnJre(), @DisabledOn...(), @EnabledOnSystemProperty(), @EnabledIfEnvironmentVariable()

@ParametrizedTest mit @MethodSource, @ValueSource, @EnumSource, @ArgumentSource oder @CsvSource

Allgemeine Tipps für Tests mit JUnit

  • EqualsVerifier testen equals() und hashCode() entsprechend der Vorgaben für beides
  • ToStringVerifier testet toString()

Spock

Mit "Spock" kann man groovy Spezialitäten nutzen, um Testdaten einfacher zu beschreiben

Testdaten erzeugen

  • generatedata.com
  • JavaFaker / ObjectMother Pattern / TestDataBuilder Pattern personBuilder.WithFirstName().

Schlecht lesbare Assertions

  • AssertEquals vs. AssertJ (fluent assertion library)
  • asumptions für Vorbedingungen (assumeThat())
  • Grouped Assertions in JUnit 5

JUnit 5

  • Migration auf JUnit 5 ist einfach durch Verwendung von vintage-Dependency. Damit laufen auch JUnit 4 Tests noch

Integrierte Tests

Integrated tests vs. integration tests Spotify hat genauere Definition "wann haben wir integrated Tests" => Das will man minimieren

HTTP

MockServer, WireMock Aber: "Don't mock API you don't own" Wenn sich die API ändert, dann merkt man es nicht Lösung: Verified Fakes

REST-assured

DB

Häufige Lösungsansätze sind embedded DB, standalone DB, shared DB

Lösung: Docker und "Testcontainers"

@Container
PostgreSQLContainer con = new PostgreSQLContainer();

Testcontainers

Bieten neben DB Containern auch Webdriver Containers mit automatischer Videoaufnahme Viele weitere Container

docker-maven-plugin

Kann auch Container starten und stoppen mit Mavens pre-integration-test und post-integration-test Phasen

Folien und Code

github.com/sparsick/test-tool-talk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment