This is an automated email from the ASF dual-hosted git repository.

sgoeschl pushed a commit to branch FREEMARKER-156
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git


The following commit(s) were added to refs/heads/FREEMARKER-156 by this push:
     new a65e87a  FREEMARKER-156 [freemarker-generator] Migrate to Mockito
a65e87a is described below

commit a65e87a6bad7c96381bfbfa5909bfdf62b014872
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Sat Jan 23 13:36:08 2021 +0100

    FREEMARKER-156 [freemarker-generator] Migrate to Mockito
---
 freemarker-generator-maven-plugin/pom.xml          |   6 +
 .../generator/maven/GeneratingFileVisitorTest.java | 170 ++++++++-------------
 .../freemarker/generator/maven/UnitTestHelper.java |  49 ++++++
 3 files changed, 119 insertions(+), 106 deletions(-)

diff --git a/freemarker-generator-maven-plugin/pom.xml 
b/freemarker-generator-maven-plugin/pom.xml
index aa8e07a..216f8c8 100644
--- a/freemarker-generator-maven-plugin/pom.xml
+++ b/freemarker-generator-maven-plugin/pom.xml
@@ -125,6 +125,12 @@
             <version>${org.testng.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <version>3.7.7</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git 
a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java
 
b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java
index ea0fdb7..32cc3c0 100644
--- 
a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java
+++ 
b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java
@@ -19,32 +19,27 @@
 
 package org.apache.freemarker.generator.maven;
 
-import freemarker.cache.FileTemplateLoader;
 import freemarker.template.Configuration;
-import mockit.Expectations;
-import mockit.Mocked;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
 import org.junit.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.FileVisitResult;
 import java.nio.file.Files;
-import java.nio.file.Path;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.ArrayList;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 public class GeneratingFileVisitorTest extends Assert {
 
@@ -53,91 +48,68 @@ public class GeneratingFileVisitorTest extends Assert {
     private static final File TEMPLATE_DIR = new File(TEST_DIR, "template");
     private static final File OUTPUT_DIR = new 
File("target/test-output/generating-file-visitor");
     private static final Map<String, OutputGeneratorPropertiesProvider> 
BUILDERS = new HashMap<>();
-    private Configuration config;
+    private final Configuration config;
     private final Properties pomProperties = new Properties();
 
     @BeforeClass
-    public static void beforeClass() throws IOException {
+    public static void beforeClass() {
+        UnitTestHelper.checkTestDir(TEST_DIR);
+        UnitTestHelper.deleteTestOutputDir(OUTPUT_DIR);
         BUILDERS.put(".json", JsonPropertiesProvider.create(DATA_DIR, 
TEMPLATE_DIR, OUTPUT_DIR));
-        // Clean output dir before each run.
-        final File outputDir = new 
File("target/test-output/generating-file-visitor");
-        if (outputDir.exists()) {
-            // Recursively delete output from previous run.
-            Files.walk(outputDir.toPath())
-                    .sorted(Comparator.reverseOrder())
-                    .map(Path::toFile)
-                    .forEach(File::delete);
-        }
     }
 
-    @BeforeMethod
-    public void before() throws IOException {
-        if (!TEST_DIR.isDirectory()) {
-            throw new RuntimeException("Can't find required test data 
directory. "
-                    + "If running test outside of maven, make sure working 
directory is the project directory. "
-                    + "Looking for: " + TEST_DIR);
-        }
-
-        config = configuration();
+    public GeneratingFileVisitorTest() {
+        config = UnitTestHelper.configuration(TEMPLATE_DIR);
         pomProperties.put("pomVar", "pom value");
     }
 
     @Test
-    public void functionalHappyPathTestNoDataModel(
-            @Mocked MavenSession session,
-            @Mocked MavenProject project,
-            @Mocked File mockFile,
-            @Mocked BasicFileAttributes attrs) throws IOException {
+    public void functionalHappyPathTestNoDataModel() throws IOException {
+
+        final MavenSession session = mock(MavenSession.class);
+        final MavenProject project = mock(MavenProject.class);
+        final File mockFile = mock(File.class);
+        final BasicFileAttributes attrs = mock(BasicFileAttributes.class);
         final List<MavenProject> projects = new ArrayList<>();
         projects.add(project);
-        new Expectations(session, project, mockFile) {{
-            session.getCurrentProject();
-            result = project;
-            session.getAllProjects();
-            result = projects;
-            project.getProperties();
-            result = pomProperties;
-            attrs.isRegularFile();
-            result = true;
-            project.getFile();
-            result = mockFile;
-            mockFile.lastModified();
-            result = 10;
-        }};
+
+        when(session.getCurrentProject()).thenReturn(project);
+        when(session.getAllProjects()).thenReturn(projects);
+        when(project.getProperties()).thenReturn(pomProperties);
+        when(attrs.isRegularFile()).thenReturn(true);
+        when(project.getFile()).thenReturn(mockFile);
+        when(mockFile.lastModified()).thenReturn(10L);
 
         final File file = new File(DATA_DIR, "mydir/success-test-2.txt.json");
         final GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, 
session, BUILDERS);
+
         assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(file.toPath(), 
attrs));
 
         final File outputFile = new File(OUTPUT_DIR, 
"mydir/success-test-2.txt");
+
         assertTrue(outputFile.isFile());
+
         final List<String> lines = Files.readAllLines(outputFile.toPath(), 
StandardCharsets.UTF_8);
         assertEquals(17, lines.size());
         assertEquals("This is a test freemarker template. Test pom data: 'pom 
value'.", lines.get(16));
     }
 
     @Test
-    public void functionalHappyPathTest(
-            @Mocked MavenSession session,
-            @Mocked MavenProject project,
-            @Mocked File mockFile,
-            @Mocked BasicFileAttributes attrs) throws IOException {
+    public void functionalHappyPathTest() throws IOException {
+
+        final MavenSession session = mock(MavenSession.class);
+        final MavenProject project = mock(MavenProject.class);
+        final File mockFile = mock(File.class);
+        final BasicFileAttributes attrs = mock(BasicFileAttributes.class);
         final List<MavenProject> projects = new ArrayList<>();
         projects.add(project);
-        new Expectations(session, project, mockFile) {{
-            session.getCurrentProject();
-            result = project;
-            session.getAllProjects();
-            result = projects;
-            project.getProperties();
-            result = pomProperties;
-            attrs.isRegularFile();
-            result = true;
-            project.getFile();
-            result = mockFile;
-            mockFile.lastModified();
-            result = 10;
-        }};
+
+        when(session.getCurrentProject()).thenReturn(project);
+        when(session.getAllProjects()).thenReturn(projects);
+        when(project.getProperties()).thenReturn(pomProperties);
+        when(attrs.isRegularFile()).thenReturn(true);
+        when(project.getFile()).thenReturn(mockFile);
+        when(mockFile.lastModified()).thenReturn(10L);
 
         final File file = new File(DATA_DIR, "mydir/success-test.txt.json");
         final GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, 
session, BUILDERS);
@@ -145,6 +117,7 @@ public class GeneratingFileVisitorTest extends Assert {
 
         final File outputFile = new File(OUTPUT_DIR, "mydir/success-test.txt");
         assertTrue(outputFile.isFile());
+
         final List<String> lines = Files.readAllLines(outputFile.toPath(), 
StandardCharsets.UTF_8);
         assertEquals(17, lines.size());
         assertEquals("This is a test freemarker template. Test json data: 
'test value'. Test pom data: 'pom value'.", lines
@@ -152,23 +125,20 @@ public class GeneratingFileVisitorTest extends Assert {
     }
 
     @Test
-    public void visitFile_badExtensionTest(
-            @Mocked MavenSession session,
-            @Mocked MavenProject project,
-            @Mocked File mockFile,
-            @Mocked BasicFileAttributes attrs) {
+    public void visitFile_badExtensionTest() {
+
+        final MavenSession session = mock(MavenSession.class);
+        final MavenProject project = mock(MavenProject.class);
+        final File mockFile = mock(File.class);
+        final BasicFileAttributes attrs = mock(BasicFileAttributes.class);
         final List<MavenProject> projects = new ArrayList<>();
         projects.add(project);
-        new Expectations(session, project, mockFile) {{
-            attrs.isRegularFile();
-            result = true;
-            session.getAllProjects();
-            result = projects;
-            project.getFile();
-            result = mockFile;
-            mockFile.lastModified();
-            result = 10;
-        }};
+
+        when(attrs.isRegularFile()).thenReturn(true);
+        when(session.getAllProjects()).thenReturn(projects);
+        when(project.getFile()).thenReturn(mockFile);
+        when(mockFile.lastModified()).thenReturn(10L);
+
         // Test file without .json suffix.
         final File file = new File(DATA_DIR, "mydir/bad-extension-test.txt");
         final GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, 
session, BUILDERS);
@@ -178,37 +148,25 @@ public class GeneratingFileVisitorTest extends Assert {
     }
 
     @Test
-    public void visitFile_notRegularFileTest(@Mocked MavenSession session,
-                                             @Mocked MavenProject project,
-                                             @Mocked BasicFileAttributes attrs,
-                                             @Mocked File mockFile) {
+    public void visitFile_notRegularFileTest() {
+
+        final MavenSession session = mock(MavenSession.class);
+        final MavenProject project = mock(MavenProject.class);
+        final File mockFile = mock(File.class);
+        final BasicFileAttributes attrs = mock(BasicFileAttributes.class);
         final List<MavenProject> projects = new ArrayList<>();
         projects.add(project);
-        new Expectations(session, project, mockFile) {{
-            attrs.isRegularFile();
-            result = false;
-            session.getAllProjects();
-            result = projects;
-            project.getFile();
-            result = mockFile;
-            mockFile.lastModified();
-            result = 10;
-        }};
+
+        when(attrs.isRegularFile()).thenReturn(false);
+        when(session.getAllProjects()).thenReturn(projects);
+        when(project.getFile()).thenReturn(mockFile);
+        when(mockFile.lastModified()).thenReturn(10L);
+
         // FYI: if you change above result to true, test will fail trying to 
read the 'mydir' directory
         // as a json file.
         final File dir = new File(DATA_DIR, "mydir");
         final GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, 
session, BUILDERS);
-        assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(dir.toPath(), 
attrs));
-    }
 
-    private static Configuration configuration() {
-        try {
-            final Configuration configuration = new 
Configuration(Configuration.VERSION_2_3_23);
-            configuration.setDefaultEncoding("UTF-8");
-            configuration.setTemplateLoader(new 
FileTemplateLoader(TEMPLATE_DIR));
-            return configuration;
-        } catch (Exception e) {
-            throw new RuntimeException("Failed to create Freemarker 
configuration", e);
-        }
+        assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(dir.toPath(), 
attrs));
     }
 }
diff --git 
a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/UnitTestHelper.java
 
b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/UnitTestHelper.java
new file mode 100644
index 0000000..114954f
--- /dev/null
+++ 
b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/UnitTestHelper.java
@@ -0,0 +1,49 @@
+package org.apache.freemarker.generator.maven;
+
+import freemarker.cache.FileTemplateLoader;
+import freemarker.template.Configuration;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Comparator;
+
+public class UnitTestHelper {
+
+    public static Configuration configuration(File testDir) {
+        try {
+            final Configuration configuration = new 
Configuration(Configuration.VERSION_2_3_30);
+            configuration.setDefaultEncoding("UTF-8");
+            configuration.setTemplateLoader(new FileTemplateLoader(testDir));
+            return configuration;
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to create Freemarker 
configuration", e);
+        }
+    }
+
+    public static void checkTestDir(File testDir) {
+        if (!testDir.isDirectory()) {
+            throw new RuntimeException("Can't find required test data 
directory. "
+                    + "If running test outside of maven, make sure working 
directory is the project directory. "
+                    + "Looking for: " + testDir);
+        }
+
+    }
+
+    public static void deleteTestOutputDir(File outputDir) {
+        try {
+            if (outputDir.exists()) {
+                // Recursively delete output from previous run.
+                Files.walk(outputDir.toPath())
+                        .sorted(Comparator.reverseOrder())
+                        .map(Path::toFile)
+                        .forEach(File::delete);
+            }
+        }
+        catch (IOException e) {
+            throw new RuntimeException("Failed to delete output directory", e);
+        }
+
+    }
+}

Reply via email to