Java Testing Notes
Ask or search…
Comment on page


If you are working with classes which have static initializers such as:
package com.example;
public class ClassWithStaticInitializer {
private static Handler mHandler = new Handler();
As mHandler belongs to ClassWithStaticInitializer.class not instance of ClassWithStaticInitializer, JVM will initialize this mHandler as soon as execution starts, thus we will not get a chance to mock it with whenNew(). In this case, we can suppress its initialization and later set its value with Whitebox.
Here is an example to suppress mHandler in ClassWithStaticInitializer.class:
public class ClassWithStaticInitializerTest {
// now when we call
public void setup throws Exception {
// At this stage, ClassWithStaticInitializer.mHandler will be null
Whitebox.setInternalState(ClassWithStaticInitializer.class, "mHandler", mckHandler);
tip: if you see any error with StackTrace containing similar looking line com.examlpe.ExampleClass.<clinit>. It means there is an static initializer, just add com.examlpe.ExampleClass in your SuppressStaticInitializationFor annotation.