I have a class that is NetworkManager. I have a lot of private methods that I realy need to write test for them.
At first I didn't find any solution to write test for my private methods. Anyway I find a way to access my private methods and write some test for them.
I used Reflection to access my functions and write tests for them. there is an example of a simple private method:
 private String myFun (String input){
        return input+"hello";
    }
There is a test class that I used reflection in it:
@RunWith(AndroidJUnit4.class)
public class NetworkManagerTest {
    private static NetworkManager networkManager;
    private Context appContext = InstrumentationRegistry.getTargetContext();
    private @ADType
    int adType = ADType.TYPE_BANNER;
    @BeforeClass
    public static void setup() {
        getInstrumentation().runOnMainSync(new Runnable() {
            @Override
            public void run() {
                networkManager = NetworkManager.getInstance();
                networkManager.addNetworkCall(TestUtil.getSampleSystemRequest());
            }
        });
    }
    @Test
    public void sample() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        Method method = NetworkManager.class.getDeclaredMethod("myFun", String.class);
        method.setAccessible(true);
        String output = (String) method.invoke(networkManager, "Ehsan");
        Assert.assertEquals("Ehsanhello", output);
    }
}
This is works fine. But the question is how much is this way okay to write test for private methods with using of reflection?
Is there a better way to achieve this goal?