Refactor event dispatch injector to use TestUtils field setter

Change-Id: I793183de883c7b20784957eaa213d79a42951639
diff --git a/utils/junit/src/main/java/org/onlab/junit/TestUtils.java b/utils/junit/src/main/java/org/onlab/junit/TestUtils.java
index 496b357..1afc494 100644
--- a/utils/junit/src/main/java/org/onlab/junit/TestUtils.java
+++ b/utils/junit/src/main/java/org/onlab/junit/TestUtils.java
@@ -40,13 +40,23 @@
     public static <T, U> void setField(T subject, String fieldName, U value)
             throws TestUtilsException {
         @SuppressWarnings("unchecked")
-        Class<T> clazz = (Class<T>) subject.getClass();
+        Class clazz = subject.getClass();
         try {
-            Field field = clazz.getDeclaredField(fieldName);
-            field.setAccessible(true);
-            field.set(subject, value);
-        } catch (NoSuchFieldException | SecurityException |
-                 IllegalArgumentException | IllegalAccessException e) {
+            while (clazz != null) {
+                try {
+                    Field field = clazz.getDeclaredField(fieldName);
+                    field.setAccessible(true);
+                    field.set(subject, value);
+                    break;
+                } catch (NoSuchFieldException ex) {
+                    if (clazz == clazz.getSuperclass()) {
+                        break;
+                    }
+                    clazz = clazz.getSuperclass();
+                }
+            }
+        } catch (SecurityException | IllegalArgumentException |
+                 IllegalAccessException e) {
             throw new TestUtilsException("setField failed", e);
         }
     }