- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Editor-Komponenten testen/mocken
Hallo,
aktuell versuche ich mich an der Modul-Entwicklung, um neue Editor-Komponenten zu erstellen oder bestehende zu erweitern.
Um den Entwicklungszyklus mรถglichst kurz zu halten, halte ich es fรผr wichtig, dass man Editor-Komponenten mocken kann.
Ich stelle mir das in einer einfachen Form so vor:
JFrame frame = new JFrame("Test");
MyGuiEditor editor = new MyGuiEditor();
// add the panel to this frame
frame.add(editor.getEditorComponent());
frame.setPreferredSize(new Dimension(800,700));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// set Location
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);
Natรผrlich werden hier keine Testdaten berรผcksichtigt und automatisierte funktionale Tests sind dadurch auch nicht mรถglich.
Auf diese Weise kรถnnte man jedoch sehr einfach prรผfen, ob die GUI-Komponente vom Aussehen her in Ordnung ist.
Daher an dieser Stelle meine Frage:
Gibt es entsprechende Ansรคtze oder Mock-Objekte, gegen die man die Editor-Komponenten entwickeln kann?
Falls notwendig: An welcher Stelle mรผsste man eine Verbindung zum FS-Server durchreichen?
Vielen Dank
Georg
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hat niemand eine Idee?
Wie entwickelt ihr denn Eure Editoren/Anpassungen/Swing-Komponenten fรผr gewรถhnlich?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Fรผr einfache Szenarien ist eine simple main Methode in der jeweiligen Klasse sehr hilfreich. Man muss nur die Klasse neu kompilieren kann kann das Layout รผberprรผfen. Folgendes Beispiel stammt aus einer Klasse, die den Konfigurationsdialog fรผr ein Modul beinhaltet.
/**
* Main method for easier gui development.
*
* @param args unused.
*/
public static void main(final String[] args) {
final JFrame frame = new JFrame("Configuration");
final WebAppConfiguration configurator = new WebAppConfiguration();
final JComponent gui = configurator.getGui(frame);
final JButton closeBtn = new JButton("Close");
closeBtn.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
frame.setVisible(false);
frame.dispose();
}
});
frame.getContentPane().add(gui);
frame.getRootPane().setDefaultButton(closeBtn);
frame.setSize(580, 300);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}
Bei entsprechender Trennung von Datenhaltung und GUI-Logik braucht man in der Regel gar keine FirstSpirit-Objekte um die GUI zu bauen. Man kann also in einem ersten Schritt die GUI per visuellem Editor ( z.B. den des Eclipse-Projektes) bauen und erst danach die Integration vornehmen.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Danke fรผr die Antwort!
Ich habe den Code gerade in mein Projekt eingefรผgt und habe nun das Problem, dass die Klasse WebAppConfiguration nicht gefunden wird. Im Classpath liegen fs-client.jar und fs-server.jar (aus Version 4.2.x)
Handelt es sich vielleicht um eine neuere Klasse oder um WebStartConfiguration?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
WebAppConfiguration ist eine selbst implementierte Klasse. Die getGui() Methode stellt die Swing-GUI zur Verfรผgung. Das Codebeispiel ist Teil von javascript:;, wo Sie auch den kompletten Quellcode runterladen kรถnnen.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok,
so groรartig unterscheidet sich das ja nun nicht von meinem Codebeispiel aus dem obigen Ansatz ;-), ich hatte mir erhofft, dass man geschickt Zugriff auf die FS-Laufzeitumgebung Zugriff bekommen kann.
Denn ich mรถchte ja auch Interaktionen testen kรถnnen, die z.B. entstehen wenn ein Benutzer "save()" aufruft, ein Locking passiert usw.
Wenn ich es richtig sehe, gibt es dafรผr jedoch leider keinen vorgesehenen Weg.
Weitere Hinweise sind natรผrlich gern genommen ๐

