package com.tddinaction.patterns.test; import static org.junit.Assert.assertEquals; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.Random; import org.junit.Test; import org.laughingpanda.beaninject.Inject; public class PrivilegedAccessExample { public static class LegacyCode { private static int randomNumber = new Random().nextInt(); public static void saySomethingTo(PrintStream out) { out.println("Random number is " + randomNumber); } } @Test public void substitutePrivateFieldWithOurStuff() throws Exception { Inject.staticField("randomNumber").of(LegacyCode.class).with( 5); ByteArrayOutputStream out = new ByteArrayOutputStream(); LegacyCode.saySomethingTo(new PrintStream(out)); assertEquals("Random number is 5", out.toString().trim()); } }