From 4fe9ff36e9c31b08b583fba5a56ea96ecc8df157 Mon Sep 17 00:00:00 2001 From: hummel Date: Thu, 15 May 2025 10:37:58 +0200 Subject: [PATCH] add simple mocking demo --- MvnDemo/pom.xml | 13 ++++++- .../informatik/mvn/mocking/CountWords.java | 28 ++++++++++++++ .../informatik/mvn/mocking/TextExtractor.java | 5 +++ .../mvn/mocking/TextExtractorTest.java | 37 +++++++++++++++++++ 4 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 MvnDemo/src/main/java/de/hs_mannheim/informatik/mvn/mocking/CountWords.java create mode 100644 MvnDemo/src/main/java/de/hs_mannheim/informatik/mvn/mocking/TextExtractor.java create mode 100644 MvnDemo/src/test/java/de/hs_mannheim/informatik/mvn/mocking/TextExtractorTest.java diff --git a/MvnDemo/pom.xml b/MvnDemo/pom.xml index 726fff5..ff50a2b 100644 --- a/MvnDemo/pom.xml +++ b/MvnDemo/pom.xml @@ -27,6 +27,13 @@ test + + org.mockito + mockito-core + 5.17.0 + test + + org.apache.logging.log4j log4j-core @@ -66,7 +73,8 @@ - de.hs_mannheim.informatik.mvn.Main + + de.hs_mannheim.informatik.mvn.Main @@ -120,7 +128,8 @@ - + org.apache.maven.plugins maven-javadoc-plugin diff --git a/MvnDemo/src/main/java/de/hs_mannheim/informatik/mvn/mocking/CountWords.java b/MvnDemo/src/main/java/de/hs_mannheim/informatik/mvn/mocking/CountWords.java new file mode 100644 index 0000000..d1606a8 --- /dev/null +++ b/MvnDemo/src/main/java/de/hs_mannheim/informatik/mvn/mocking/CountWords.java @@ -0,0 +1,28 @@ +package de.hs_mannheim.informatik.mvn.mocking; + +import java.util.HashMap; +import java.util.Map; + +public class CountWords { + + public static void main(String[] args) { + var cnt = new CountWords().countWords("Der schnelle braune Fuchs springt über den mueden Hund. Der Hund liegt nur muede herum."); + cnt.entrySet().stream().forEach(e -> System.out.println(e.getKey() + ": " + e.getValue())); + } + + public Map countWords(String text) { + var words = text.toLowerCase().split("\\W+"); + var cnt = new HashMap(); + + for (String w : words) { + cnt.put(w, cnt.getOrDefault(w, 0) + 1); + } + + return cnt; + } + + public Map countWordsFromFile(TextExtractor te, String path) { + return this.countWords(te.extractText(path)); + } + +} diff --git a/MvnDemo/src/main/java/de/hs_mannheim/informatik/mvn/mocking/TextExtractor.java b/MvnDemo/src/main/java/de/hs_mannheim/informatik/mvn/mocking/TextExtractor.java new file mode 100644 index 0000000..e52a97e --- /dev/null +++ b/MvnDemo/src/main/java/de/hs_mannheim/informatik/mvn/mocking/TextExtractor.java @@ -0,0 +1,5 @@ +package de.hs_mannheim.informatik.mvn.mocking; + +public abstract class TextExtractor { + public abstract String extractText(String path); +} diff --git a/MvnDemo/src/test/java/de/hs_mannheim/informatik/mvn/mocking/TextExtractorTest.java b/MvnDemo/src/test/java/de/hs_mannheim/informatik/mvn/mocking/TextExtractorTest.java new file mode 100644 index 0000000..85d3664 --- /dev/null +++ b/MvnDemo/src/test/java/de/hs_mannheim/informatik/mvn/mocking/TextExtractorTest.java @@ -0,0 +1,37 @@ +package de.hs_mannheim.informatik.mvn.mocking; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +class TextExtractorTest { + + @Test + void testCountWords() { + CountWords cw = new CountWords(); + var cnt = cw.countWords("hallo welt"); + + assertEquals(1, cnt.get("hallo")); + assertEquals(1, cnt.get("welt")); + + assertEquals(null, cnt.get("unbekannt")); + } + + @Test + void testCountWordsFromFile() { + CountWords cw = new CountWords(); + + TextExtractor teMock = Mockito.mock(TextExtractor.class); + when(teMock.extractText("/tmp/test.pdf")).thenReturn("hallo welt"); + + var cnt = cw.countWordsFromFile(teMock, "/tmp/test.pdf"); + + assertEquals(1, cnt.get("hallo")); + assertEquals(1, cnt.get("welt")); + + assertEquals(null, cnt.get("unbekannt")); + } + +}