JUnit für JFileChooser

bob_sheknowdas

Aktives Mitglied
Hi,
ich habe eine Methode die einen JFileChooser nutzt und möchte dafür gerne einen jUNit test schreiben.
Ich hab allerdings keine Idee wie ich den manuellen JFileChooser im Test automatisiert bedienen kann.
Hier mal besagte Methode (chooser ist der JFileChooser):

Java:
public static int readFileAndReturnErrorCode() {
		chooser.showOpenDialog(null);
		File file = chooser.getSelectedFile();
		int errorCode = ErrorCodes.Filechoosing_Was_Aborted;
		if (file != null) {
			try {
				errorCode = FileValidator.validateAndReturnErrorCode(file);
				if (errorCode == ErrorCodes.No_Error) {
					readFile(file);
				}
			} catch (IOException e) {
				e.printStackTrace();
				errorCode = ErrorCodes.Exception_While_File_Readed;
			}
		}
		return errorCode;
	}
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Die Frage ist, ob der JFileChooser da überhaupt etwas zu suchen hat. Die Hauptaufgabe der Methode ist doch eine ganz andere oder? Was ist beispielsweise wenn du die Methode ohne GUI nutzen möchtest?
Ich würde eher die Abhängigkeiten der Methode übergeben, in diesem Fall also ein File-Objekt? Dann ist deine Methode auch testbar, das Testen des Filechooser ist nicht erforderlich, das haben (hoffentlich) andere übernommen ;)
 

bob_sheknowdas

Aktives Mitglied
Die Frage ist, ob der JFileChooser da überhaupt etwas zu suchen hat. Die Hauptaufgabe der Methode ist doch eine ganz andere oder? Was ist beispielsweise wenn du die Methode ohne GUI nutzen möchtest?
Ich würde eher die Abhängigkeiten der Methode übergeben, in diesem Fall also ein File-Objekt? Dann ist deine Methode auch testbar, das Testen des Filechooser ist nicht erforderlich, das haben (hoffentlich) andere übernommen ;)

Wenn ich JUnit richtig verstanden habe ist doch das Ziel jede public-Methode zu testen.
Das bedeutet egal ob ich den JFileChooser nun in dieser Methode oder in einer anderen erzeuge, früher oder später wird er im Test aufgerufen.
Die Frage ist wie ich damit umgehen kann...
 

eRaaaa

Top Contributor
Wenn ich JUnit richtig verstanden habe ist doch das Ziel jede public-Methode zu testen.
Das bedeutet egal ob ich den JFileChooser nun in dieser Methode oder in einer anderen erzeuge, früher oder später wird er im Test aufgerufen.
Wer sagt denn dass man den FileChooser überhaupt in einer public-Methode aufruft? :)
Die Frage ist wie ich damit umgehen kann...
Wenn du mich fragst gar nicht, die Methode ist nicht testbar und der Chooser gehört für mich da nicht rein. Dass du deine Methode/Aufgabe mit JUnit nicht testen kannst, zeigt ja eig. schon dass hier irgend etwas nicht passt, ich würde der Methode ein File-Objekt übergeben und dann ist das auch mit einem JUnit Fall testbar, sauberer getrennt und vor allem für die Zukunft auch evtl. anderweitig einsetzbar (Konsolenprogramm, Server, etc.)
 

bob_sheknowdas

Aktives Mitglied
Wer sagt denn dass man den FileChooser überhaupt in einer public-Methode aufruft? :)

Wenn du mich fragst gar nicht, die Methode ist nicht testbar und der Chooser gehört für mich da nicht rein. Dass du deine Methode/Aufgabe mit JUnit nicht testen kannst, zeigt ja eig. schon dass hier irgend etwas nicht passt, ich würde der Methode ein File-Objekt übergeben und dann ist das auch mit einem JUnit Fall testbar, sauberer getrennt und vor allem für die Zukunft auch evtl. anderweitig einsetzbar (Konsolenprogramm, Server, etc.)


Hmm...
Ok, ich poste hier mal die gesammte Klasse. Vllt kannst du mir helfen die so umzustrukturieren, dass die Funktionalität erhalten bleibt und ich JUnit-Tests aufrufen kann.
Ich habe nämlich wirklich keine Idee wie das aussehen könnte... :bahnhof:

Java:
public abstract class FileLoader {

	private static FileReader fileReader;
	private static BufferedReader bufferedReader;
	private static JFileChooser chooser = new JFileChooser();
	private static int[][] cells = null;

	public static int readFileAndReturnErrorCode() {
		chooser.showOpenDialog(null);
		File file = chooser.getSelectedFile();
		int errorCode = ErrorCodes.Filechoosing_Was_Aborted;
		if (file != null) {
			try {
				errorCode = FileValidator.validateAndReturnErrorCode(file);
				if (errorCode == ErrorCodes.No_Error) {
					readFile(file);
				}
			} catch (IOException e) {
				e.printStackTrace();
				errorCode = ErrorCodes.Exception_While_File_Readed;
			}
		}
		return errorCode;
	}

	private static void readFile(File file) throws IOException {
		int lineNumber = countLines(file);
		fileReader = new FileReader(file);
		bufferedReader = new BufferedReader(fileReader);
		String line = bufferedReader.readLine();
		int charactersPerLine = line.length();
		cells = new int[lineNumber][charactersPerLine];
		for (int currentLineNumber = 0; currentLineNumber < lineNumber; currentLineNumber++) {
			for (int currentCharNumber = 0; currentCharNumber < charactersPerLine; currentCharNumber++) {
				char currentChar = line.charAt(currentCharNumber);
				cells[currentLineNumber][currentCharNumber] = Character
						.getNumericValue(currentChar);
			}
			line = bufferedReader.readLine();
		}
		bufferedReader.close();
	}

	private static int countLines(File file) throws IOException {
		fileReader = new FileReader(file);
		bufferedReader = new BufferedReader(fileReader);
		String line = bufferedReader.readLine();
		int lineNumber = 0;
		while (line != null) {
			lineNumber++;
			line = bufferedReader.readLine();
		}
		return lineNumber;
	}

	public static int[][] getCells() {
		return cells;
	}
}
 

eRaaaa

Top Contributor
Zeilen 5,9 und 10 löschen und
Code:
public static int readFileAndReturnErrorCode(File file)
verwenden?
In einem Testfall kannst du jetzt einmal die Methode mit einem korrekten File-Objekt aufrufen (oder mehrere Testfälle mit unterschiedlichen Fileobjekte, je nachdem was deine Methoden da eig. machen) und einmal mit null, was simulieren würde dass der User den "Abbrechen" Button klicken würde im FileChooser.
 

bob_sheknowdas

Aktives Mitglied
Ich glaube ich versteh langsam worauf du hinaus willst und werd das erstmal so umsetzen.
Ich denke aber das verscheibt das Problem nur. Denn so kann ich zwar diese Methode testen, habe aber in meiner GUI-Klasse dann Methoden mit dem FileChooser, die nicht testbar sind...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
S Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
R String Replace für JUnit Java Basics - Anfänger-Themen 19
I JUnit Datapoints für mehrere Testklassen Java Basics - Anfänger-Themen 4
M Junit TestCase für Random() Zahlen Java Basics - Anfänger-Themen 6
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
6 Best Practice Feedback zu Service / JUnit Tests Java Basics - Anfänger-Themen 3
M Anfängerfehler - Tests JUnit IntelliJ Java Basics - Anfänger-Themen 24
D Cannot find JUnit.framework Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
U JUnit testen auf SomeException Java Basics - Anfänger-Themen 5
A JUnit testing is inkonsistent Java Basics - Anfänger-Themen 12
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
W JUnit Tests Java Basics - Anfänger-Themen 4
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
L JUnit tests in java Java Basics - Anfänger-Themen 5
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
F JUnit - Was ist mit "side effects" gemeint ? Java Basics - Anfänger-Themen 2
H JUnit in Eclipse: java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 9
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
L Junit Testing bei XML? Java Basics - Anfänger-Themen 3
J LocalDateTime testen mit Junit Java Basics - Anfänger-Themen 20
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
A Objekt in Methode zurückgeben, JUnit zeigt Error Java Basics - Anfänger-Themen 2
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
O JUnit - Objektreferenzen Java Basics - Anfänger-Themen 3
G Testen mit JUnit Java Basics - Anfänger-Themen 4
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
C JUnit Tests. How to Java Basics - Anfänger-Themen 5
S Junit Test Java Basics - Anfänger-Themen 2
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
L Junit Tests Java Basics - Anfänger-Themen 10
A IllegalArgumentException in JUnit testen Java Basics - Anfänger-Themen 3
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
V JUnit Klassen Java Basics - Anfänger-Themen 3
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
S Kommt es zu Seiteneffekten wenn man waehrend den laufenden JUnit Tests den Code aendert? Java Basics - Anfänger-Themen 2
M JUnit Testmethoden mit mehreren assert Methoden Java Basics - Anfänger-Themen 1
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
Z JUnit Exception Java Basics - Anfänger-Themen 2
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
M Ist die Hamcrest Bibliothek auch schon in Junit 4.11 verfügbar? Java Basics - Anfänger-Themen 1
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
M Reihenfolge von Testmethoden in JUnit beeinflussen Java Basics - Anfänger-Themen 2
G JUnit-Tests im Programmdurchlauf starten Java Basics - Anfänger-Themen 4
T Best Practice JUnit: Wie Klassen durch Stubs/Mockups ersetzen Java Basics - Anfänger-Themen 7
T JUnit test failed Java Basics - Anfänger-Themen 3
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
T Junit in Eclipse Java Basics - Anfänger-Themen 1
P JUnit bedeutungen Java Basics - Anfänger-Themen 3
R JUnit Test mit einer Dateistruktur als Testparameter Java Basics - Anfänger-Themen 3
shiroX OOP Array kleinste Zahl mit jUnit test Java Basics - Anfänger-Themen 3
S JUnit assertEquals funktioniert nichgt wie es sollte :( Java Basics - Anfänger-Themen 7
V Frage zu JUnit Tests Java Basics - Anfänger-Themen 3
S File vergleich - Junit Java Basics - Anfänger-Themen 6
T JUnit Java Basics - Anfänger-Themen 18
G Junit Java Basics - Anfänger-Themen 4
X JUnit testing Java Basics - Anfänger-Themen 7
T JUnit Suite frage Java Basics - Anfänger-Themen 6
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
S InvocationTargetException bei JUnit Testlauf Java Basics - Anfänger-Themen 2
B JUnit - Mini-Test Java Basics - Anfänger-Themen 9
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
Y Junit Test - Testwert ändert sich Java Basics - Anfänger-Themen 12
T Junit --Exception testen Java Basics - Anfänger-Themen 15
A JUnit Tests in Jar-Archiv packen Java Basics - Anfänger-Themen 2
G Erste Schritte JUNIT Regressionstests automatisieren Java Basics - Anfänger-Themen 2
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
M JUnit - nur Failures loggen? Java Basics - Anfänger-Themen 2
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
T JUNIT Nullpointerexception Java Basics - Anfänger-Themen 3
M JUNIT tests mit ant script ausführen Java Basics - Anfänger-Themen 4
S [JUnit] eigener Testsuite Runner + Ausgabe Java Basics - Anfänger-Themen 6
S [JUnit] Print Results while running Java Basics - Anfänger-Themen 6
W Mit jUnit Array testen? Java Basics - Anfänger-Themen 5
T Junit Tests Java Basics - Anfänger-Themen 7
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
M Junit tests gehen nicht Java Basics - Anfänger-Themen 2
E OOP einfache Array Aufgabe mit jUnit Java Basics - Anfänger-Themen 5
L JUNIT Testing Java Basics - Anfänger-Themen 3
C jUnit: Erfahren, ob der getestete Code eine Exception gehandelt hat Java Basics - Anfänger-Themen 3
timbeau JUnit Test Dauer speichern/loggen Java Basics - Anfänger-Themen 16
turmaline JUnit testen ob keine Exception auftritt Java Basics - Anfänger-Themen 23

Ähnliche Java Themen

Neue Themen


Oben