[JAVA] Umgeschaltete Eigenschaftendateien für Entwicklung und Produktion mit JMockit

Ich habe J Mockit zum ersten Mal berührt und verschiedene Dinge ausprobiert, also ein Memo, das ich als Erinnerung verdoppeln konnte ・ Java1.8 ・ Eclipse Oxygen (4.7.0) ・ Jmockit-1.33

Testklasse

import static org.junit.Assert.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.junit.Test;
import mockit.Invocation;
import mockit.Mock;
import mockit.MockUp;

public class PackagesTest {

	/**
	 *Wenn nichts verspottet ist
	 */
	@Test
	public void test_getData() {
		assertEquals("some_id"			,Packages.getData("id"));
		assertEquals("some_password"	,Packages.getData("password"));
	}

	/**
	 *Sollte ich beim Wechseln von Eigenschaftendateien zum Testen mit dem Rückgabewert von load oder inputstream herumspielen?
	 */
	@Test
	public void test_getData_MockPath() {
		new MockUp<Properties>() {
			@Mock
			public void load(Invocation inv,InputStream inputStream) {
				InputStream inputStream2;
				try {
					inputStream2 = new FileInputStream("sample -Kopieren.properties");
					inv.proceed(inputStream2);
					inputStream2.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		};
		assertEquals("test_id"			,Packages.getData("id"));
		assertEquals("test_password"	,Packages.getData("password"));
	}

	/**
	 *Ist es weniger aufwändig, von MockUp den Literalwert zu überprüfen, wie er im Code der Testeinheit angegeben ist?
	 */
	@Test
	public void test_getData_MockProperty() {
		new MockUp<Properties>() {
			@Mock
			public String getProperty(Invocation inv,String value) {
				switch (value){
				case "id":
					return "mock_string";
				default:
					return inv.proceed(value);
				}
			}
		};
		assertEquals("mock_string"		,Packages.getData("id"));
		assertEquals("some_password"	,Packages.getData("password"));
	}
}

Hauptklasse

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;

public class Packages{

	public static void main(String[] args){
		System.out.println(getData("id"));
		System.out.println(getData("password"));
	}

	public static String getData(String arg) {
		String file = "sample.properties";
		String value = new String();
		Properties properties = new Properties();

		try {
			InputStream inputStream = new FileInputStream(file);
			properties.load(inputStream);
			inputStream.close();

			value = properties.getProperty(arg);

		} catch (Exception ex) {
			System.out.println(ex.getMessage());
		}
		return value;
	}
}

Recommended Posts

Umgeschaltete Eigenschaftendateien für Entwicklung und Produktion mit JMockit
[Java] Entwicklung mit mehreren Dateien mittels Paket und Import
[Für mich] Browseranzeige mit JSP-Dateien und Servlet-Klassen
Hinweise zum Lesen und Generieren von XLSX-Dateien aus Java mit Apache POI
Optimierung der Web-Systementwicklung mit Docker-Compose und Git