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);
+ }
+
+ }
+}