Vacatures

Internship: An open-rewrite recipe for rewriting JUnit assertions to AssertJ assertions

Hengelo Softwareontwikkeling Stage/assignment HBO

About the assignment

Companies usually have software conventions to ensure developers solve problems in a common way. For example, Eijsink has a convention written down that says all unit tests should use AssertJ assertions (https://assertj.github.io/doc/), instead of JUnit assertions (https://junit.org/junit5/). We think that tests written in AssertJ are much more readable than tests written with JUnit assertions. In practice, (newly on-boarded) developers may not be aware of this convention. Furthermore, not having an automated way to detect a violation of this convention has lead to code-bases using both AssertJ and JUnit assertions. For simplicity, we would like to see all JUnit assertions rewritten to AssertJ assertions in these code-bases. An example of both methods is as follows.

JUnit assertion: assertEquals(List.of(1, 2, 3), actualList)
AssertJ assertion: assertThat(actualList).containsExactly(1, 2, 2)

In the above example, AssertJ analyzes the class of the object-under-test to enable fluent assertions. This leads to much more readable code. The complexity of the assignment lies in the fact that many other classes can be used to test code. Different classes enable different fluent assertions, which need to be accommodated to the largest degree possible in a student assignment.

The suggested approach is to implement OpenRewrite recipes (https://docs.openrewrite.org/), based on abstract syntax tree visitors, that can automatically execute JUnit to AssertJ transformations. We will offer code-bases so that the student can validate the implementation indeed correctly transforms existing unit tests.

The student is free to publish the recipes in the public domain, under a permissive open source license, so that the software community at large can benefit this work.

If time permits, the student can design additional recipes, such as the following.

  • Rewrite Spring 5 code to Spring 6 and Spring Boot 2 to Spring Boot 3.
  • Rewrite variable declarations and assignments to use Java 10's var keyword.
  • Rewrite project Lombok's @Value classes to Java 14's record classes.

This assignment fits both an internship, as well as a graduation project.
 

We would like to meet you

If you are a student WO Computer Science and you are interested in this assignment, you can contact Jeroen Meijer

Wat krijg je van ons?

Heerlijke verse lunch van de zaak

Elke dag samen lunchen, dat vinden we belangrijk. Brood, crackers, fruit, sap… Het staat voor je klaar, waarna je bij een groep collega’s aan tafel aan kunt schuiven. Én het is van de zaak! Een luxe om in de ochtenden je lunchbrood niet te hoeven smeren.

Vrijdagmiddag een biertje en bitterballen

Bij ons gaat geen vrijdagmiddag voorbij zonder borrel. Of je nu in Oosterwolde of Hengelo werkt. Met fris, bier of wijn in de hand sluiten we samen de week af. Én laten we de bitterballen niet vergeten! Mocht je een vrijdag niet kunnen of willen? Geen probleem, want niemand is verplicht.

Opleidings- mogelijkheden en ruimte om te groeien

Uitdaging en een afwisselende baan binnen een moderne organisatie? Dat vind je bij ons! Naast de uitstekende primaire en secundaire arbeidsvoorwaarden krijg je alle gelegenheid interne trainingen te volgen én te groeien naar een andere functie. Zo kun jij je blijven ontwikkelen en groeien wij met je mee.

Over ons

Wij zijn Eijsink. De kassaleverancier? Klopt, maar we doen nog veel meer. Noem ons ambitieus softwarebedrijf mét mensenkennis en internationale ambitie. Waar 200 specialisten elke dag in teams werken aan futureproof oplossingen die ertoe doen voor de horeca, catering, leisure, sport en zorg. IJzersterke technologie die processen optimaliseert. Betrokkenen en bevlogen mensen voelen zich bij ons meteen thuis. Hier krijg je de kans om van écht betekenis te zijn in het succes van aansprekende klanten (Efteling, De Beren, Center Parcs), de in-house softwareontwikkeling en ambitieuze roadmap.

Weet je, als we álles willen vertellen wat we doen, zijn we nog wel even bezig. We laten het liever gewoon zien.

Onze sollicitatieprocedure

1. Sollicitatie verstuurd

We bekijken je sollicitatie zorgvuldig, maar we houden je niet te lang in spanning: binnen 2 weken weet je of we je uitnodigen voor een gesprek.

2. Je bent door!

Top! We bellen om het eerste gesprek in te plannen. Prangende vragen kun je dan al meteen stellen.

3. Face-to-face

Zo’n eerste gesprek zien we als een kennismaking. Zonder stress, juist informeel. We willen een goed beeld van jou krijgen. En jij natuurlijk van ons. Dat kan alleen als we elkaar het hemd van het lijf vragen. Zo weten we al snel of we goed bij elkaar passen.

4. Part two

Smaakt het naar meer? Dan gaan we in het tweede gesprek de diepte in. Jij licht je woeste skillset verder toe, wij gaan in op de details van de functie en het team.

5. Wij ook van jou

Twee gesprekken zijn vaak genoeg om een goed beeld te krijgen. Is het enthousiasme wederzijds? Dan doen we je graag een aanbod en  begint jouw carrière bij Eijsink. Welkom!

Direct
solliciteren