Use powermock's Whitebox for reflection 68/93168/3
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 19 Oct 2020 10:59:29 +0000 (12:59 +0200)
committerRobert Varga <nite@hq.sk>
Sat, 24 Oct 2020 17:19:00 +0000 (17:19 +0000)
We have some reflection-based tests, migrate them to use Whitebox.

Change-Id: Ia272f004e32d3de5e58779359cd00a858f6a01ad
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/yang-binding/pom.xml
binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifierTest.java

index 64eb7b2bf740df4288bfe85ebf73aa821b7c6a0c..2c8d426e4b269ebb15b92eaf8fa86a351b8207ba 100644 (file)
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-reflect</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
index a666235b309c93d68320992d6306b7051f51e4e6..5148337464558189f815d55479e3bb12d4a64e71 100644 (file)
@@ -22,7 +22,6 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
-import java.lang.reflect.Field;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
 import org.opendaylight.yangtools.yang.binding.test.mock.FooChild;
@@ -33,6 +32,7 @@ import org.opendaylight.yangtools.yang.binding.test.mock.NodeChild;
 import org.opendaylight.yangtools.yang.binding.test.mock.NodeChildKey;
 import org.opendaylight.yangtools.yang.binding.test.mock.NodeKey;
 import org.opendaylight.yangtools.yang.binding.test.mock.Nodes;
+import org.powermock.reflect.Whitebox;
 
 public class InstanceIdentifierTest {
 
@@ -136,24 +136,17 @@ public class InstanceIdentifierTest {
         assertFalse(instanceIdentifier1.equals(object));
         assertTrue(instanceIdentifier1.equals(instanceIdentifier2));
 
-        final Field pathArgumentsField = InstanceIdentifier.class.getDeclaredField("pathArguments");
-        final Field wildCardField = InstanceIdentifier.class.getDeclaredField("wildcarded");
-        pathArgumentsField.setAccessible(true);
-        wildCardField.setAccessible(true);
-        pathArgumentsField.set(instanceIdentifier2, instanceIdentifier1.pathArguments);
-        wildCardField.set(instanceIdentifier4, true);
+        Whitebox.setInternalState(instanceIdentifier2, "pathArguments", instanceIdentifier1.pathArguments);
+        Whitebox.setInternalState(instanceIdentifier4, "wildcarded", true);
 
         assertTrue(instanceIdentifier1.equals(instanceIdentifier2));
-
         assertFalse(instanceIdentifier1.equals(instanceIdentifier3));
         assertFalse(instanceIdentifier1.equals(instanceIdentifier4));
+
         final InstanceIdentifier<Node> instanceIdentifier5 = InstanceIdentifier.create(Node.class);
-        final Field hashField = InstanceIdentifier.class.getDeclaredField("hash");
-        hashField.setAccessible(true);
-        hashField.set(instanceIdentifier5, instanceIdentifier1.hashCode());
-        wildCardField.set(instanceIdentifier5, false);
+        Whitebox.setInternalState(instanceIdentifier5, "hash", instanceIdentifier1.hashCode());
+        Whitebox.setInternalState(instanceIdentifier5, "wildcarded", false);
 
-        assertFalse(instanceIdentifier1.equals(instanceIdentifier5));
         assertNotNull(InstanceIdentifier.create(ImmutableList.copyOf(instanceIdentifier1.getPathArguments())));
         assertNotNull(InstanceIdentifier.create(Nodes.class).child(Node.class));
         assertNotNull(InstanceIdentifier.create(Nodes.class).child(Node.class, new NodeKey(5)));