diff --git a/src/test/java/net/onrc/onos/core/util/TestUtils.java b/src/test/java/net/onrc/onos/core/util/TestUtils.java
index a3606ed..98d5d60 100644
--- a/src/test/java/net/onrc/onos/core/util/TestUtils.java
+++ b/src/test/java/net/onrc/onos/core/util/TestUtils.java
@@ -4,6 +4,7 @@
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -116,6 +117,24 @@
     }
 
     /**
+     * Triggers an allocation of an object of type <T> and forces a call to
+     * the private constructor.
+     *
+     * @param constructor Constructor to call
+     * @param <T> type of the object to create
+     * @return created object of type <T>
+     */
+    public static <T> T callConstructor(Constructor<T> constructor) {
+        try {
+            constructor.setAccessible(true);
+            return constructor.newInstance();
+        } catch (InstantiationException | IllegalAccessException |
+                InvocationTargetException error) {
+            return null;
+        }
+    }
+
+    /**
      * Avoid instantiation.
      */
     private TestUtils() {}
diff --git a/src/test/java/net/onrc/onos/core/util/UtilityClassChecker.java b/src/test/java/net/onrc/onos/core/util/UtilityClassChecker.java
index 50d7060..f2ffe1d 100644
--- a/src/test/java/net/onrc/onos/core/util/UtilityClassChecker.java
+++ b/src/test/java/net/onrc/onos/core/util/UtilityClassChecker.java
@@ -4,7 +4,6 @@
 import org.hamcrest.StringDescription;
 
 import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 
@@ -71,15 +70,9 @@
 
         }
 
-        // Trigger an allocation of the object to force the hidden
-        // constructor call
-        try {
-            constructor.setAccessible(true);
-            constructor.newInstance();
-            constructor.setAccessible(false);
-        } catch (InstantiationException|IllegalAccessException|
-                 InvocationTargetException error) {
-            failureReason = error.getCause() + " when calling constructor";
+        final Object newObject = TestUtils.callConstructor(constructor);
+        if (newObject == null) {
+            failureReason = "could not instantiate a new object";
             return false;
         }
         return true;
