diff --git a/src/test/java/org/apache/commons/beanutils2/converters/BooleanArrayConverterTestCase.java b/src/test/java/org/apache/commons/beanutils2/converters/BooleanArrayConverterTestCase.java
index ea94e48..a0849a3 100644
--- a/src/test/java/org/apache/commons/beanutils2/converters/BooleanArrayConverterTestCase.java
+++ b/src/test/java/org/apache/commons/beanutils2/converters/BooleanArrayConverterTestCase.java
@@ -158,7 +158,7 @@
         final BooleanConverter bc = new BooleanConverter(
             trueStrings, falseStrings, BooleanConverter.NO_DEFAULT);
         final BooleanArrayConverter converter = new BooleanArrayConverter(
-            bc, BooleanArrayConverter.NO_DEFAULT);
+            bc, AbstractArrayConverter.NO_DEFAULT);
 
         final boolean[] results = (boolean[]) converter.convert(null, "NOPE, sure, sure");
         assertNotNull(results);
@@ -263,7 +263,7 @@
             trueStrings, falseStrings, BooleanConverter.NO_DEFAULT);
 
         final BooleanArrayConverter converter = new BooleanArrayConverter(
-            bc, BooleanArrayConverter.NO_DEFAULT);
+            bc, AbstractArrayConverter.NO_DEFAULT);
 
         ConvertUtils.register(converter, BooleanArrayConverter.MODEL);
         final boolean[] sample = new boolean[0];
diff --git a/src/test/java/org/apache/commons/beanutils2/locale/LocaleBeanificationTestCase.java b/src/test/java/org/apache/commons/beanutils2/locale/LocaleBeanificationTestCase.java
index 2d1293f..da2d06f 100644
--- a/src/test/java/org/apache/commons/beanutils2/locale/LocaleBeanificationTestCase.java
+++ b/src/test/java/org/apache/commons/beanutils2/locale/LocaleBeanificationTestCase.java
@@ -27,6 +27,7 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
+import org.apache.commons.beanutils2.BeanUtilsBean;
 import org.apache.commons.beanutils2.BeanUtilsTestCase;
 import org.apache.commons.beanutils2.ContextClassLoaderLocal;
 import org.apache.commons.beanutils2.ConversionException;
@@ -299,7 +300,7 @@
         assertEquals("Signal not set by test thread", 2, signal.getSignal());
         assertTrue(
                     "Different LocaleBeanUtilsBean instances per context classloader",
-                    LocaleBeanUtilsBean.getInstance() != signal.getBean());
+                    BeanUtilsBean.getInstance() != signal.getBean());
         assertTrue(
                     "Different LocaleConvertUtilsBean instances per context classloader",
                     LocaleConvertUtilsBean.getInstance() != signal.getConvertUtils());
diff --git a/src/test/java/org/apache/commons/beanutils2/locale/LocaleConvertUtilsTestCase.java b/src/test/java/org/apache/commons/beanutils2/locale/LocaleConvertUtilsTestCase.java
index 8859297..116f607 100644
--- a/src/test/java/org/apache/commons/beanutils2/locale/LocaleConvertUtilsTestCase.java
+++ b/src/test/java/org/apache/commons/beanutils2/locale/LocaleConvertUtilsTestCase.java
@@ -72,7 +72,7 @@
 
         LocaleConvertUtils.deregister();
 
-        final NumberFormat nf = DecimalFormat.getNumberInstance();
+        final NumberFormat nf = NumberFormat.getNumberInstance();
         final String result = nf.format(1.1);
 
         // could be commas instead of stops in Europe.
