diff --git a/src/test/java/org/apache/maven/plugins/resources/ResourcesMojoTest.java b/src/test/java/org/apache/maven/plugins/resources/ResourcesMojoTest.java
index 7b6795f..31ad57c 100644
--- a/src/test/java/org/apache/maven/plugins/resources/ResourcesMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/resources/ResourcesMojoTest.java
@@ -37,7 +37,6 @@
 import org.apache.maven.plugins.resources.stub.MavenProjectResourcesStub;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
 import org.eclipse.aether.RepositorySystemSession;
 
 public class ResourcesMojoTest
@@ -691,18 +690,9 @@
         throws IOException
     {
         assertTrue( FileUtils.fileExists( fileName ) );
-
-        BufferedReader reader = null;
-        try
+        try( BufferedReader reader = new BufferedReader( new FileReader( fileName ) ) )
         {
-            reader = new BufferedReader( new FileReader( fileName ) );
             assertEquals( data, reader.readLine() );
-            reader.close();
-            reader = null;
-        }
-        finally
-        {
-            IOUtil.close( reader );
         }
     }
 
diff --git a/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBuildStub.java b/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBuildStub.java
index eee97a7..ad032c9 100644
--- a/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBuildStub.java
+++ b/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBuildStub.java
@@ -240,7 +240,7 @@
         }
     }
 
-    private void createFiles( String parent, String testparent )
+    private void createFiles( String parent, String testparent ) throws IOException
     {
         File currentFile;
 
@@ -278,15 +278,8 @@
 
             if ( !currentFile.exists() )
             {
-                try
-                {
-                    currentFile.createNewFile();
-                    populateFile( currentFile );
-                }
-                catch ( IOException io )
-                {
-                    //TODO: handle exception
-                }
+                currentFile.createNewFile();
+                populateFile( currentFile );
             }
         }
     }
@@ -300,8 +293,6 @@
             try ( FileOutputStream outputStream = new FileOutputStream( file ) )
             {
                 outputStream.write( data.getBytes() );
-                outputStream.flush();
-                outputStream.close();
             }
         }
     }
