Whitebox
class provides the method 'invokeMethod', it is used to invoke the methods of
an object (or) class. Following are the overloaded form of 'invokeMethod'.
public static synchronized <T> T
invokeMethod(Object instance, Object... arguments) throws Exception
public static synchronized <T> T
invokeMethod(Class<?> klass, Object... arguments) throws Exception
public static synchronized <T> T
invokeMethod(Object instance, String methodToExecute, Object...
arguments)throws Exception
public static synchronized <T> T
invokeMethod(Object instance, String methodToExecute, Class<?>[]
argumentTypes, Object... arguments) throws Exception
public static synchronized <T> T
invokeMethod(Object instance, String methodToExecute, Class<?> definedIn,
Class<?>[] argumentTypes, Object... arguments) throws Exception
public static synchronized <T> T invokeMethod(Object
instance, Class<?> declaringClass, String methodToExecute, Object...
arguments) throws Exception
public static synchronized <T> T
invokeMethod(Object object, Class<?> declaringClass, String
methodToExecute, Class<?>[] parameterTypes, Object... arguments) throws
Exception
public static synchronized <T> T
invokeMethod(Class<?> clazz, String methodToExecute, Object... arguments)
throws Exception
Following
snippet is used to call the method ‘isStringPalindrome’ and pass the argument
‘madam’ to the method.
boolean isPalindrome
= Whitebox.invokeMethod(util, "isStringPalindrome",
"madam");
Find
the following working application.
StringUtil.java
package com.sample.util; public class StringUtil { /** * * @param str * @return true if the string is palindrome, else false. */ private boolean isStringPalindrome(String str) { if (str == null || str.isEmpty()) { return true; } return str.equals(new StringBuilder(str).reverse().toString()); } }
StringUtilTest.java
package com.sample.util; import static org.junit.Assert.*; import org.junit.Test; import org.powermock.reflect.Whitebox; public class StringUtilTest { private StringUtil util = new StringUtil(); @Test public void isStringPalindrome_palindrome_true() throws Exception{ boolean isPalindrome = Whitebox.invokeMethod(util, "isStringPalindrome", "madam"); assertTrue(isPalindrome); } @Test public void isStringPalindrome_palindrome_false() throws Exception{ boolean isPalindrome = Whitebox.invokeMethod(util, "isStringPalindrome", "Hello"); assertFalse(isPalindrome); } }
No comments:
Post a Comment