Deze proeftoets is deel van de DEA Course aan de Hogeschool Arnhem/Nijmegen. In deze proeftoets worden verschillende bestaande workshops gecombineerd tot 1 representatieve toets waar normaal 1.5 uur voor staat. Als je de workshops gemaakt hebt zou je zonder daar op terug te vallen deze oefentoets in de gestelde tijd moeten kunnen maken. Zo niet, dan kom je kennis of handelingssnelheid tekort. Maak deze oefentoets uiterlijk eind van onderwijsweek 3 zodat er voldoende tijd is om eventuele gaten in kennis of ervaring te dichten.
- Maak een nieuw Maven project aan met als groupId
oose.dea.voornaamachternaam
, bijvoorbeeldoose.dea.arnouddejager
. Zet de Java versie in dit project in depom.xml
op12
en zorg dat hetJUnit 5.4.0
gebruikt. - Plaats de classes
AdderExecutor
,FizzBuzzExecutor
enFizzBuzzRunner
in het nieuwe project in een packageoose.dea.voornaamachternaam
, bijvoorbeeldoose.dea.rodymiddelkoop
. - Schrijf unit-tests waarmee je 100% test coverage krijgt voor de
execute
methode van FizzBuzzExecutor en voor deexecute
methode vanAdderExecutor
. - De huidige methode is niet bestand tegen negatieve input. Pas de execute methode aan zodat deze een eigen unchecked exception van het type
NonPositiveFizzBuzzInputException
gooit als de input kleiner of gelijk is dan 0. - Schrijf een unit-test waarmee je de nieuwe exceptionele situatie kunt testen.
- Run de tests in Maven op de command-line en laat zien dat alle tests uit de stappen 1.3 en 1.5 slagen door een screenshot van de Maven-output te maken of de output in een bestandje te bewaren genaamd stap1.6.log.
- De class
FizzBuzzExecutor
bevat verschillende bad smells. Vervang de magic numbers door constanten. - De
execute
methoden vanAdderExecutor
enFizzBuzzExecutor
lijken sterk op elkaar en bevatten duplicate code. Refactor de code door een nieuwe gedeelde superklasse te introduceren die de duplicate code verwijdert. Test het succes van deze refactoring door de unit tests vanAdderExecutor
enFizzBuzzExecutor
te runnen, deze moeten dan groen zijn.
- Voeg de classes
Product
,ProductCategory
enStreams
toe aan je project en zet ook de bestaande unit-test vanStreams
in je project. Om die unit-test te laten compileren heb je een extra dependency nodig, namelijk met groupIdorg.hamcrest
, artifactIdhamcrest-library
en versie2.1
, voeg deze dependency toe. - Implementeer de 4 methoden van de
Streams
class met behulp van de Streams API, zo dat de vier geleverde unit tests slagen.
- Voeg de class
ProductIncreaser
aan je project toe. - Maak een nieuwe class
ThreadedProductIncreaser
met een eigenmain
methode. Maak in deze main methode:-
1 instantie van
Product
aan:Product tv = new Product("TV", 1200);
-
2 Threads die de prijs van dit product ophogen door de
ProductIncreaser
multi-threaded te maken -
2 Threads die de prijs van dit product ophogen door gebruik van een lambda-expressie
-
Start de vier threads en bescherm de Product
class zodat niet meerdere threads tegelijk de prijs kunnen ophogen.