diff --git a/src/main/org/apache/ant/antunit/AntUnitExecutionNotifier.java b/src/main/org/apache/ant/antunit/AntUnitExecutionNotifier.java
index a531766..41fb8d3 100644
--- a/src/main/org/apache/ant/antunit/AntUnitExecutionNotifier.java
+++ b/src/main/org/apache/ant/antunit/AntUnitExecutionNotifier.java
@@ -20,9 +20,6 @@
 
 package org.apache.ant.antunit;
 
-import java.io.File;
-
-import org.apache.tools.ant.Project;
 
 /** 
  * Provides methods that allow the AntUnitScriptRunner to notify the test progress.
diff --git a/src/main/org/apache/ant/antunit/listener/BaseAntUnitListener.java b/src/main/org/apache/ant/antunit/listener/BaseAntUnitListener.java
index 2bc1129..1c3c21a 100644
--- a/src/main/org/apache/ant/antunit/listener/BaseAntUnitListener.java
+++ b/src/main/org/apache/ant/antunit/listener/BaseAntUnitListener.java
@@ -36,7 +36,6 @@
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.taskdefs.LogOutputStream;
 import org.apache.tools.ant.types.EnumeratedAttribute;
-import org.apache.tools.ant.types.LogLevel;
 import org.apache.tools.ant.util.FileUtils;
 import org.apache.tools.ant.util.TeeOutputStream;
 
diff --git a/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitTestCaseTest.java b/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitTestCaseTest.java
index 99b24be..6ec361c 100644
--- a/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitTestCaseTest.java
+++ b/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitTestCaseTest.java
@@ -24,15 +24,13 @@
 import java.io.FileReader;
 import java.io.IOException;
 
-import org.apache.ant.antunit.junit3.AntUnitTestCase;
-import org.apache.tools.ant.util.FileUtils;
-
-import junit.framework.Assert;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestFailure;
 import junit.framework.TestResult;
 
+import org.apache.tools.ant.util.FileUtils;
+
 public class AntUnitTestCaseTest extends TestCase {
 
     File f = new File("src/etc/testcases/antunit/junit.xml");
diff --git a/src/tests/junit/org/apache/ant/antunit/junit4/AntUnitSuiteRunnerTest.java b/src/tests/junit/org/apache/ant/antunit/junit4/AntUnitSuiteRunnerTest.java
index 5e5757c..e19cc64 100644
--- a/src/tests/junit/org/apache/ant/antunit/junit4/AntUnitSuiteRunnerTest.java
+++ b/src/tests/junit/org/apache/ant/antunit/junit4/AntUnitSuiteRunnerTest.java
@@ -29,7 +29,6 @@
 import junit.framework.TestSuite;
 
 import org.apache.ant.antunit.junit3.AntUnitSuite;
-import org.apache.ant.antunit.junit3.ErrorTestCase;
 import org.apache.tools.ant.util.FileUtils;
 import org.junit.internal.runners.InitializationError;
 import org.junit.runner.Description;
@@ -109,8 +108,7 @@
 
     public void testMissingSuiteMethodInitializationError() {
         try {
-            AntUnitSuiteRunner runner = new AntUnitSuiteRunner(
-                    JUnit4AntUnitRunnableWithoutSuiteMethod.class);
+            new AntUnitSuiteRunner(JUnit4AntUnitRunnableWithoutSuiteMethod.class);
             fail("InitializationError expected");
         } catch (InitializationError e) {
             String msg = e.getCauses().get(0).getMessage();
@@ -120,8 +118,7 @@
 
     public void testNonStaticSuiteMethodInitializationError() {
         try {
-            AntUnitSuiteRunner runner = new AntUnitSuiteRunner(
-                    JUnit4AntUnitRunnableWithNonStaticSuite.class);
+            new AntUnitSuiteRunner(JUnit4AntUnitRunnableWithNonStaticSuite.class);
             fail("InitializationError expected");
         } catch (InitializationError e) {
             String msg = e.getCauses().get(0).getMessage();
@@ -132,8 +129,7 @@
 
     public void testInvalidSuiteReturnTypeError() {
         try {
-            AntUnitSuiteRunner runner = new AntUnitSuiteRunner(
-                    JUnit4AntUnitRunnableWithInvalidSuiteReturnType.class);
+            new AntUnitSuiteRunner(JUnit4AntUnitRunnableWithInvalidSuiteReturnType.class);
             fail("InitializationError expected");
         } catch (InitializationError e) {
             String msg = e.getCauses().get(0).getMessage();
@@ -144,8 +140,7 @@
 
     public void testInvalidSuiteReturnNull() {
         try {
-            AntUnitSuiteRunner runner = new AntUnitSuiteRunner(
-                    JUnit4AntUnitRunnableWithInvalidSuiteReturningNull.class);
+            new AntUnitSuiteRunner(JUnit4AntUnitRunnableWithInvalidSuiteReturningNull.class);
             fail("InitializationError expected");
         } catch (InitializationError e) {
             String msg = e.getCauses().get(0).getMessage();
@@ -157,8 +152,7 @@
 
     public void testInvalidSuiteReferencingMissingFile() {
         try {
-            AntUnitSuiteRunner runner = new AntUnitSuiteRunner(
-                    JUnit4AntUnitRunnableRefferencingIncorrectFile.class);
+            new AntUnitSuiteRunner(JUnit4AntUnitRunnableRefferencingIncorrectFile.class);
             fail("InitializationError expected");
         } catch (InitializationError e) {
             String msg = e.getCauses().get(0).getMessage();
