/* * Copyright (c) 2006-2011 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package mockit; import java.io.*; import org.junit.*; import static org.junit.Assert.*; public final class MockingOfInternalInstancesTest { static final String FILE_NAME = "testFile.out"; PrintStream originalSystemOut; final OutputStream testOutput = new ByteArrayOutputStream(); final FileIO fileIO = new FileIO(); @Before public void redirectStandardOutput() { originalSystemOut = System.out; System.setOut(new PrintStream(testOutput)); } @After public void restoreStandardOutput() { System.setOut(originalSystemOut); } private void assertExpectedFileIO() { File realFile = new File(FILE_NAME); boolean realFileCreated = realFile.exists(); if (realFileCreated) { realFile.delete(); } assertFalse("Real file created", realFileCreated); assertTrue("File not written", testOutput.toString().startsWith("File written")); } @SuppressWarnings({"UnusedParameters"}) @Test public void stubOutFileCreationWithMockUps() throws Exception { new MockUp<FileWriter>() { @Mock void $init(String s) {} }; new MockUp<OutputStreamWriter>() { @Mock void $init(OutputStream out, String s) {} }; new MockUp<BufferedWriter>() { @Mock void close() {} }; fileIO.writeToFile(FILE_NAME); assertExpectedFileIO(); } @Test public void stubOutFileCreationWithStaticPartialMocking() throws Exception { new Expectations() { @Mocked({"(String)", "(OutputStream, String)"}) FileWriter fileWriter; @Mocked("close") BufferedWriter bufferedWriter; }; fileIO.writeToFile(FILE_NAME); assertExpectedFileIO(); } }