Browse souce code repository at: https://github.com/jjYBdx4IL/java-evaluation/blob/master/src/test/java/tests/java/lang/FieldAccessTest.java
package tests.java.lang;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.SystemUtils;
import org.apache.log4j.Logger;
import org.junit.Assume;
import org.junit.Before;
import org.junit.Test;

import com.github.jjYBdx4IL.utils.env.Maven;
import com.github.jjYBdx4IL.utils.klazz.Compile;

/**
 *
 * @author Github jjYBdx4IL Projects
 */
public class FieldAccessTest extends Compile {

    @SuppressWarnings("unused")
    private final static Logger log = Logger.getLogger(FieldAccessTest.class.getName());
    private final static File tempDir = Maven.getTempTestDir(FieldAccessTest.class);

    @Before
    public void before() throws IOException {
        // too long commands on Windows...
        Assume.assumeTrue(SystemUtils.IS_OS_UNIX);
        
        FileUtils.cleanDirectory(tempDir);
        setClassOutputDir(tempDir);
    }

    @Test
    public void testAccessProtectedFieldFromSamePackage() {
        writeClass("pkg", "public class A", "protected String test;");
        writeClass("pkg", "public class B extends A", "public void someMethod() { test = null; }");
        assertCompile();
    }

    @Test
    public void testAccessPkgPrivateFieldFromSamePackage() {
        writeClass("pkg", "public class A", "String test;");
        writeClass("pkg", "public class B extends A", "public void someMethod() { test = null; }");
        assertCompile();
    }

    @Test
    public void testAccessProtectedFieldFromSubPackage() {
        writeClass("pkg", "public class A", "protected String test;");
        writeClass("pkg.sub", new String[]{"pkg.A"}, "public class B extends A", "public void someMethod() { test = null; }");
        assertCompile();
    }

    @Test
    public void testAccessPkgPrivateFieldFromSubPackage() {
        writeClass("pkg", "public class A", "String test;");
        writeClass("pkg.sub", new String[]{"pkg.A"}, "public class B extends A", "public void someMethod() { test = null; }");
        assertNotCompile();
    }
}
-------------------------------------------------------------------------------
Test set: tests.java.lang.FieldAccessTest
-------------------------------------------------------------------------------
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.251 s - in tests.java.lang.FieldAccessTest
testAccessPkgPrivateFieldFromSubPackage  Time elapsed: 2.202 s
testAccessProtectedFieldFromSubPackage  Time elapsed: 2.341 s
testAccessProtectedFieldFromSamePackage  Time elapsed: 2.299 s
testAccessPkgPrivateFieldFromSamePackage  Time elapsed: 2.407 s