Update of /cvsroot/abbot/abbot/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24996/doc Added Files: FAQ.shtml RELNOTES.shtml Tutorial-1.shtml Tutorial-2.shtml Tutorial-3.shtml download.shtml examples.shtml help.shtml news.shtml overview.shtml quick-start.shtml topics.shtml tutorials.shtml user-guide.shtml Removed Files: FAQ.html RELNOTES.html Tutorial-1.html Tutorial-2.html Tutorial-3.html download.html examples.html help.html news.html overview.html quick-start.html topics.html tutorials.html user-guide.html Log Message: Move to .shtml docs --- NEW FILE: RELNOTES.shtml --- <html> <head> <title>Abbot Release Notes</title> <meta name="authors" content="Timothy Wall"> <meta name="keywords" content="abbot release notes"> <meta name="description" content="Release notes for Abbot."> <meta name="date" content="2005-09-16"> </head> <table border="0" width="100%" cellpadding="0" cellspacing="0"> <tr> <td width="146" valign="top"> <!--#include virtual="/doc/topics.shtml" --> </td> <td> <h1>Abbot Release Changes</h1> <h2>Release 1.0.0rc1 (050916)</h2> <h3>Features</h3> <ul> <li>Add selection of menu item by path. <li>Application fixtures (finally!). Run one application instance, perform many tests. <li>When exceptions are caught <i>both</i> on the event dispatch thread and the main test thread, fail with the one that was caught first. Previously test thread exceptions always took priority, which would often hide event dispatch exceptions. <li>Wait for contents of expanded tree nodes to appear if slow-loading. <li>Added keymap for de_DE (w32) (Niels Stargardt), ja_JP (w32/mac) (kaz), fr_FR (w32) (jean Thieser). <li>Added JGraph example extension. <li>Exit on close for frames used by ComponentTestFixture, so if a test hangs, you can easily kill it. <li>Make JTreeTester work with lazily-created tree nodes (pat dumais). <li>Add assert for tree path existence in JTreeTester (pat dumais). <li>Clear text fields when actionEnterText is called with an empty string. <li>Allow for class path changes when looking for test suites to load. Ensure abbot.jar is always implicitly in the path. <li>Allow different function keys to be mapped in Costello. <li>Added tester for JTextField (commit actions). </ul> <h3>Bug Fixes</h3> <ul> <li>Fix sporadic submenu activation failure on w32. <li>Fix dropped 'sz' characters with German input (Mario Boller). <li>Fix image capture test to not hang if images are missing (Art Hampton). <li>Fix recording labels for with vs w/o motion (pdham). <li>Fix array index bounds exception when looking up "/" (Slimane Amar). <li>Lots of javadoc cleanup. <li>Fix NPE in ArgumentParser when toString() returns null. <li>Fix JComboBox to work with table cell editors. <li>Fix sporadic text selection error (drop fails before drag starts). <li>Ensure relative directory gets set prior to load (opeongo). <li>Fix bug selecting text outside of visible bounds. <li>Restore system state on script terminate steps only, instead of at the end of every ScriptFixture. <li>Remove 1.4 VM dependencies. <li>Fix bug specifying a unique AWT menu item by path. <li>Avoid hang when appletviewer is closed via the window manager. <li>Fix NPE in J{Table|Tree|List}Tester when a renderer text is null (patrick dumais). <li>Fix exception thrown in editor when the filename for an included script/fixture is cleared. <li>Fix some minor Costello UI appearance bugs. <li>Fix bug repositioning annotations. <li>Fix bug scrolling a JTextField into visibility. </ul> <h2>Release 0.13.1 (041111)</h2> <h3>Features</h3> <ul> <li>Allow test cases with no-arg constructors. <li>Allow arbitrary mnemonics in the editor; use ampersand when defining a label in localizations. For example, an O-umlaut can be tied to Alt-O. <li>KeyStroke map generator is included. Please run it for your locale if your locale and/or platform is not already included. Run <a href="http://abbot.sf.net/doc/api/abbot/tester/MapGenerator.html">this class</a>. <li>Editor always keeps the same LAF, regardless of changes made by the code under test (thanks to a little insight triggered by Art Hampton). <li>When capturing an image, Shade the entire target component. <li>Update to gnu-regexp-1.1.4. <li>Allow selection of popup menu items by path. <li>Refactor system state save/restore into its own class. <li>ScriptFixture now allows multiple scripts to be aggregated in a TestSuite and share an enclosing launch/terminate. <li>Added ComponentTester.actionDragOver (bigmike_f). </ul> <h3>Bug Fixes</h3> <ul> <li>Close JInternalFrames without additional side effects. <li>Enable "." to match newlines in multi-line regexp. <li>Fixed dropping of empty string arguments in script read. <li>Fixed a large number of intermittent failures on OSX and Linux. <li>Allow text selections to be made in either direction. <li>Fix exception thrown clicking approve button in JFileChooser (jim.mcmaster). <li>Allow Call step "args" attribute to be omitted (heidl). <li>Avoid incorrectly matching existing references (shift-F1 on a component in the editor would select the right component but the wrong reference). <li>Image capture on frames/dialogs will now include decorations. <li>Property catch and re-throw event dispatch exceptions in test fixtures. <li>Fix NPE when attempting to select an out of bounds row in a tree. <li>Fix JTreeTester.actionMakeVisible to use either object-based or string-based TreePaths, and throw an ActionFailedException if the path is not found. </ul> <h2>Release 0.13.0 (040816)</h2> <h3>Features</h3> <ul> <li>Added Java expression evaluation in the new Expression step. You can even poke at your application while it's running. Details are in the Costello user's guide. <li>Add switch to explicitly play back scripts in AWT mode (mtrumpler). <li>Improve image comparison performance (Udo Borkowski). <li>Added menu items to editor to access mailing list, website, and user guide. <li>Automatically ignore windows that have been disposed. <li>Update JDOM to b10. <li>Allow specification of expansion control in JTreeLocation using a "+" prefix. <li>Add support for TextComponent, JScrollBar, JSplitPane. <li>Added more extensive keymaps for w32. <li>Explicitly record focus accelerators (ibhag). </ul> <h3>Bug Fixes</h3> <ul> <li>Fix loading of suites of scripts from editor. <li>Fix absolutely dreadful freeze when matched components are hidden and new references created (test case provided by kartikn). <li>Fix NPE when table/list values are null. <li>Disallow moving anything prior to a launch step. <li>Fix exception thrown deleting script steps. <li>Fix recording failure when expanding tree nodes that don't have a toString rpresentation. <li>Fix NPE when selecting text under X11 systems. <li>Fix failing TreePath comparisons (such as asserting a selected tree path). <li>Fix class cast exception on certain appletviewer menu selections. <li>Forked scripts are properly forked when run independently (Christian Heldstab). </ul> <h2>Release 0.12.4 (040708)</h2> <h3>Features</h3> <ul> <li>Allow abbot.tester.Robot to be used with AWT Popups on w32 systems. <li>Allow resolution of AWT menu items with duplicate labels by specifying the path. These paths are recorded automatically if necessary. <li>Allow resolution of multiple PopupMenus on a single component. <li>Add several java.awt.Menu-related utility functions to abbot.util.AWT. <li>Added basic tester support for java.awt.List. <li>Allow robot/AWT mode to be changed on the fly. <li>Standardized platform/VM bug detection and tests (see abbot.util.Bugs). </ul> <h3>Bug Fixes</h3> <ul> <li>Changes to reference IDs are now detected by the Script. <li>Fixed slow reference creation performance which would cause apparent freezes when recording or with shift-F1 (jkdoyle). <li>Fix a bug when editing the text of an action method which would leave the editor in a strange state. <li>Fix sporadic menu selection failure on w32. <li>Fix sporadic window show/hide tracking failure on w32. <li>Fix deadlock in internal tests on fast dual CPU OSX box. <li>Fix recursive save bug when saving a new script in a temporary directory. </ul> <h2>Release 0.12.3 (040611)</h2> <h3>Bug Fixes</h3> <ul> <li>Fix apparent hang/freeze when recording/selecting components, especially with children of JTabbedPanes or other components which hide their children. <li>Fix XSD; args attribute is not required on call steps. <li>Fix strongly held reference when filtering components (nixnixnix). <li>Fix NPE when recording null-valued selections in JTable/JList. <li>Fix class cast exception when running scripts and reporting step status. <li>Workaround disabled menus bug on OSX. Fix Robot verification w/1.4.2_04. <li>Fix broken example scripts (fontchooser) (thanks to quikdraw). <li>Fix editor tutorial script so that it runs outside of the editor. <li>Fix several bugs selecting methods in the Assert step. <li>Fix script context parsing error with w32 drive letters. <li>Removed deprecated classes. <li>Ensure most objects used in a test may be GC'd after a test run. Mostly affects the Abbot test suite. <li>Fix test fixture timing issues that were causing lost key/mouse events. </ul> <h2>Release 0.12.2 (040318)</h2> <h3>Bug Fixes</h3> <ul> <li>Make class path editor in launch step show full path, not just the base name of the file. <li>Avoid inadvertent change to selected method in Call steps when the list is refreshed on class/classpath changes. <li>Ensure enabled state of Assert/Sample buttons is correct as the component selection changes. </ul> <h2>Release 0.12.1 (040318)</h2> <h3>Features</h3> <ul> <li>Scripts now support the appletviewer step, which automatically sets things up for testing an applet. <li>Highlight Call step target class names and methods which are not found. Also highlight method name if the number of arguments doesn't match an existing method. <li>Automatically change interrelated Assert step settings. <li>Preserve property selection when other selections change. <li>Provide access to InputMap/ActionMap for the selected component. <li>Added specific location support for JTableHeader (flexcode). <li>Assertion failures now provide the file and line number in the exception message (suggested by Niels Stargardt). </ul> <h3>Bug Fixes</h3> <ul> <li>Fix some null value comparison bugs in Assert steps. Note that a literal null value is represented by the String "null" in an argument list (no quotes) (nickoliver24). <li>Asserts on array-valued properties are now generated properly. <li>Pseudo-property assertions (e.g. JTabbedPane.getTabs) are now handled properly when created and edited. Previously the target class was sometimes incorrect, causing runtime errors. <li>Call/Assert/Sample step editors now auto-update the list of available methods when the class is changed. <li>Fixed several cosmetic editor bugs. <li>Fixed class loader error switching between scripts in a suite. <li>Fixed recording bug with invisible windows 2000 PLAF default frame. <li>Ensure tabbed pane plays back recorded tab selections (niels.stargardt). <li>Ensure any references to hierarchy components are weak so that they can be GC'd. <li>Many OSX bug fixes for JDK1.4.2. It's <i>really</i> unfriendly to Robot. <li>Fix editor misbehavior after script renaming/save as. </ul> <h2>Release 0.12.0 (040224)</h2> <h3>Features</h3> <ul> <li>Much more convenient component search for hand-coded unit tests. <li>Pressing ESC on text fields reverts to the last "saved" value; pressing Enter "saves" the value. <li>Improved readability and tracking in the Component browser; includes popup menus and tooltips in the hierarchy under their invoking components. <li>Added testers for javax.swing.JSpinner (1.4 only), JSlider, JFileChooser. <li>Added testers for java.awt.Button, Checkbox (req'd in AWT mode). <li>Ignore inadvertent drags during clicks (dan...@da...). <li>Accept all input from step editors immediately instead of waiting for Enter or focus changes (recommended by mbisping). <li>Provide more convenient editing of arguments and classpaths (daniel.kasmeroglu). Check out that nice ArrayEditor component, which has been unit tested with the framework. <li>Added support for localized keymaps. <li>Allow inserting of new, non-existent scripts into an existing script (opeongo). <li>Allow explicit editing of ComponentReference attributes. </ul> <h3>Bug Fixes</h3> <ul> <li>Fix drag/drop recording/playback on JTree/JTable. <li>Fix failure to properly terminate drop actions. <li>Warn when opening a new script when the current one hasn't been saved. <li>Properly handle hidden roots in JTrees. <li>Fix failure to parse locations in a JTree by value or row. <li>Fix IllegalStateException thrown on certain window show/disposal. <li>Don't allow script editor to be hidden by code under test. <li>Don't dispose windows on normal script termination unless there's a terminate step in the script (mtrumpler). <li>Fix some AWT-mode bugs with applets and JTree selection. <li>Properly activate editable JComboBoxes. <li>Fix bugs when entering quoted arguments or embedded commas. </ul> <h2>Release 0.11.0 (040107)</h2> <h3>Features</h3> <ul> <li>When recording drag, drop, popup, or click actions on JList, JTable, JTree, and JTabbedPane, you get component-specific locations (value, row, cell, etc). <li>Reset locking keys (caps lock, num lock, etc) prior to running any tests. <li>Support popup, select, click, drag, and drop on component substructure (row, cell, value, etc) by using an abstract, component-specific location. <li>Perform JTable, JList, and JTree actions by value in addition to indexed location. <li>Provide component-oriented keyboard methods on abbot.tester.Robot. <li>Add support for java.awt.PopupMenu. <li>Add support for java.awt.CheckBoxMenuItem <li>Provide component lookup from an arbitrary root component. <li>Component lookup/addition time reduced by up to 80%. <li>Record drag/drop on 1.4 VMs. Pre-1.4 VMs do not provide sufficient information to record drag/drop actions completely. </ul> <h3>Bug Fixes</h3> <ul> <li>Remove spin locks in ComponentTestFixture that might interfere with test startup. <li>Properly record double click when the component disappears as a result of the click. <li>Fix key modifier mask generation in AWT mode. <li>Clarify exceptions thrown on failed JInternalFrame actions. <li>Properly save more than 2 levels of nested scripts. <li>Prevent editor status window from being too wide. <li>Fix several keystroke-generation bugs in AWT mode. <li>Fix several mouse event bugs in AWT mode. </ul> <h2>Release 0.10.1 (031010)</h2> <h3>Features</h3> <ul> <li>Speed up hierarchy export significantly. <li>Don't record extraneous shortcut modifier keystrokes. </ul> <h3>Bug Fixes</h3> <ul> <li>Avoid InvalidScriptException when loading Assert steps which use ComponentReferences for custom GUI classes. <li>ComponentTestFixture reports exceptions thrown on the event dispatch thread as errors. <li>Fix NPE when exporting component hierarchy. <li>Fix NPE when comparing Assert values against null. <li>Don't let AUT get hidden when recording starts (w32). <li>Don't show status dialog if there is no obscured text. <li>Don't record window movement/resize until the window is actually showing. <li>Properly play back w32 drive selection in JFileChooser. <li>Avoid excessive CPU usage by the component hierarchy browser. <li>Make actionFocus work with Applets. <li>Avoid disappearing applet nodes in hierarchy browser. <li>Ensure drop ends on w32. <li>Fix AWT-mode submenu selection. <li>Optimize some component lookups that proved to be slow. <li>Fix Color<-->String comparisons (sometimes resulted in NPE). </ul> <h2>Release 0.10.0 (030828)</h2> <h3>Features</h3> <ul> <li>Allow running of selected steps of a script. <li>Better resolution and tracking of applets (mtrumpler). <li>Cache component lookup to improve recording and playback performance (mtrumpler). <li>Simplify component reference usage. <li>Allow regexp pattern matching in component reference attributes. <li>Add support for AWT FileDialog (avenet). <li>Allow reference to system properties (ala ant, e.g. ${user.dir}). <li>Preserve System.out/err across test runs. <li>Provide export of entire GUI hierarchy from Costello. </ul> <h3>Bug Fixes</h3> <ul> <li>Fix drag actions to work more reliably. <li>Always insert Terminate steps last in Costello. <li>Allow launch step to appear anywhere in a script. <li>Fix some slowness in recording (mostly due to ComponentReference creation). <li>Don't record both an action and a keystroke on Enter and other similar keystrokes which produce both an action and text input. <li>Properly track a Dialog with the same name as its parent. <li>Add missing attributes (vmargs) to schema. <li>Use a single WindowTracker to avoid sporadic lookup failures. <li>Be smarter when recording the value for a combo box selection. <li>Properly handle invalid accelerators from property files. <li>Properly capture ESC key when recording. <li>Show confirmations on script delete/clear. </ul> <h2>Release 0.9.1 (030711)</h2> <h3>Features</h3> <ul> <li>Add support for internal frames. <li>Add new component references with alt+shift+F1. <li>Capture setting of caret position in text fields. <li>Preserve System property settings across test code invocations. <li>Add XML validation on script load (ckoelle). <li>XML schema/DTD included in docs (ckoelle). <li>Preserve order of ComponentReferences in script XML (javajosh). </ul> <h3>Bug fixes</h3> <ul> <li>Ensure windows are ready for input before sending events, since isShowing and WINDOW_OPENED/COMPONENT_SHOWN aren't sufficient indicators (this previously sometimes required an explicit delay after waiting for a window to show). <li>Don't auto-encode commas in array argument lists. <li>Don't accept directories as "new script" (OSX). <li>Properly update default step descriptions when steps are edited. <li>Do better error handling on editor startup (esp. invalid script errors). <li>Generate accurate modifiers in AWT mode, work around 1.4.1 java.awt.Rectangle bug. <li>Ensure proper class loader is used with threaded launch. <li>Update to newer xerces implementation. </ul> <h2>Release 0.9.0 (030527)</h2> <h3>Features</h3> <ul> <li>Greatly improved step editing support in the script table, including drag/drop, multiple selections, and grouping. <li>Support saving component property values for later use as ${property} (sebastian). <li>Provide detailed descriptions of action arguments when inserting actions (extracted from javadoc). <li>Provide file:line information of the source XML script on failures. <li>German translations added (ckoelle). <li>Record/playback frame maximize/normalize (ckoelle). <li>Started a tutorial for the script editor which is actually a test script which uses annotations. <li>Record/playback for AWT Choice component. <li>Expose some system timeouts as properties. <li>Auto-fill the argument list with the currently selected component when manually inserting an action or assertion. <li>Store the least-derived class possible for assertions and actions. <li>Add component-specific popup actions (ghmorgan). </ul> <h3>Bug Fixes</h3> <ul> <li>Automatically escape commas in individual arguments which contain commas. <li>Fix many JComboBox recording bugs. <li>Don't terminate AUT on script name changes. <li>Fix property list filtering in editor. <li>Keyboard cut in script table now works. <li>Image capture fixed (mostly). <li>Report first XML parse error instead of last when loading scripts (mtrumpler). <li>Enable menu selections when a parent menu is already opened. <li>Fix some synchronization bugs with multiple simultaneous event dispatch threads. <li>HierarchyEvents are no longer used in recording, which should avoid NPEs on pre 1.4 VMs. <li>Catch null-parented dialogs (from applets) (mtrumpler). <li>Fix some bugs in tutorial #2. <li>Remove ambiguity in Call/Assert step classes when resolving methods and target classes. </ul> <h2>Release 0.8.4 (030402)</h2> <h3>Features</h3> <ul> <li>Annotations to facilitate playing back a program as a user tutorial. <li>Track JInternalFrames (pickens). <li>Stop recording if the editor window is activated. <li>Added a stress-test example. <li>Add step editors for raw AWTEvents. <li>Record window closings triggered by the window manager (i.e. click in close box). <li>Extend component selection for image capture (pickens). <li>Timeouts are set to the actual time elapsed during recording (pickens). </ul> <h3>Bug Fixes</h3> <ul> <li>Don't record tooltip displays (pickens). <li>Properly cache recorders for inner classes. <li>Fix start/stop recording bugs. <li>Fix dropped key events during recording (pickens). <li>Fix recording/editor bug which would sometimes reorder incoming events, causing inconsistent recordings and sometimes a stack overflow. <li>Fix bug which only allowed void-returning methods in a Call invocation. </ul> <h2>Release 0.8.3 (030115)</h2> <h3>Features</h3> <ul> <li>Added a JUnit fixture (derived from TestCase) to facilitate component unit tests. <li>Use separate event queues for applications under test. <li>Improved support for multiple clicks. <li>Improved feedback for text entry on editors. <li>Preserve Costello layout across invocations. <li>Add method selection popups in editors for Call, Assert, Action, and Launch. <li>Include extra properties in the component browser property list (such as getMenuLabels for JPopupMenu components). <li>Major rework of class reloading to more closely mimic the default AppClassLoader. <li>Return values for default ScriptTestSuite execution now match that of the junit test runners, so failures and errors will be caught by Ant. </ul> <h3>Bug Fixes</h3> <ul> <li>Fix playback of JTextComponent recordings (jcapitao). <li>Track context in Component Browser reference list. <li>Various nested script bugs. <li>Use OSX quit and about hooks. <li>Avoid w32 drive a: bug with file choosers in standalone tests. </ul> <h2>Release 0.8.2 (021201)</h2> <h3>Features</h3> <ul> <li>JTextComponent support for miscellaneous selections, cut, copy, paste, etc. <li>ActionMap support. Robot will generate the appropriate keystrokes to invoke a particular action on a component, e.g. select-all on a text component would be ctrl-a on w32 systems, or command-a on a Mac. <li>Image capture/comparison. Comparisons can be inserted manually or while recording events by pressing F3. <li>Added arbitrary method invocation step ("call") (bchristen). New step types can be added by simply dropping in an appropriately named class. <li>Add non-modal window for displaying long errors and stack traces. <li>Visibly disable editor UI while recording the GUI under test. This provides better feedback about the state of the recording. <li>Provide more ComponentReference ctors to facilitate hand-generated references. </ul> <h3>Bug Fixes</h3> <ul> <li>Fix some failing Assert step method lookups. <li>Fix recording of BACK_SPACE and other special keys. <li>Adding a boolean property check where the value was "false" would save a check for "true" instead. <li>Avoid disposing the JUnit Swing TestRunner (or any other test running environment) when running a test script. <li>Classes derived from ScriptTestCase were not used when generating a suite with ScriptTestSuite (ScriptTestCase instances were created instead). <li>Fixed several potential deadlocks. </ul> <h2>Release 0.8.1 (021103)</h2> <h3>Features</h3> <ul> <li>Provide "breakpoint" capability to run up until a selected step, to facilitate getting a GUI into a desired state before editing or recording. <li>Capture InputMethod events (required for Chinese, Japanese, and other extended characters sets, as well as special character input on Macintosh). Many thanks to Sarif Koichi and Matt Pekar for helping to get this working. <li>JListTester provides property-like access to list configuration (bchristen). <li>Japanese (sarif), Russian (iryna.z), Polish (pawel korbut), Italian (antonio-petrelli) locales added. <li>Auto-detect some w32 Java/Robot bugs (ptardif). <li>Provide option for capturing mouse motion when recording events. <li>Consolidate key recordings into a single text string if possible. <li>Added a FAQ. <li>Support VM args passed to a forked script. <li>Allow recording to be started and stopped using F2. This facilitates starting a recording while modal dialogs are showing. <li>Allow component selection in the GUI under test using F1. Neither of these facilities will interfere with their handling by the code under test. <li>Refactored event recorder such that it doesn't dependon the rest of the framework. <li>Provide a ComponentReference ctor for use in hand-generated code. </ul> <h3>Bug Fixes</h3> <ul> <li>Fixed several capture bugs (0.8.1.1). <li>Fix a bunch of Windows XP failures. <li>Avoid a large class of application startup deadlocks caused by the application assuming the event thread has not yet started (which isn't the case when launching from the editor or within a suite of GUI tests). <li>Cleaned up boot class loading; explicitly check for classes in the boot path rather than depending on a package list to exclude from reloads. <li>Fix capture of some extraneous key modifiers. <li>Don't abort applications which call JFrame.setDefaultCloseOperation. <li>Ensure all frames are found when running applets. <li>Fix null package on some loaded classes. <li>Steps now move in and out of sequences properly. <li>Component Reference generation works with nested dialogs. </ul> <h2>Release 0.8.0 (021007)</h2> <h3>Features</h3> <ul> <li>Updated to work properly under Java 1.4. <li>Support for forked scripts. It is now possible to run a script in a separate VM while tracking its progress. Full exception/failure backtrace information is preserved and the script step execution is visible in the editor. This provides a solution for those cases where the reloading class loader is not sufficient to clean up after the code under test. <li>Support for image capture (arbitrary and component contents) and single pixel sampling. <li>Improved XML handling to preserve locale-specific character encodings. Using JDOM is a lot easier than xerces. <li>Improved editing of existing script steps. Custom GUI editors are provided instead of requiring raw XML editing. <li>Support for AWT menus (actions and recording). <li>Confirm script save before editor exit. <li>Support persistent script comments. <li>Provide a Web Start launch. </ul> <h3>Bug Fixes</h3> <ul> <li>Require complete method names for Action/Assert steps. <li>Repaint issues fixed under 1.4. <li>No more spewage when application under test exits from event dispatch. <li>Fixed popup menu recording bug for w32. <li>Scripts should work properly under ANT (fixed a classpath recursion bug when scanning ANT's embedded classpath). <li>Menus can now be properly used under OSX with useScreenMenuBar=true. </ul> <h2>Release 0.7.3 (020913)</h2> <h3>Features</h3> <ul> <li>Launch steps can be threaded, e.g. if your main method doesn't return in a timely fashion, or directly invokes something like Dialog.show that requires input. <li>Initial i18n support (please contribute your own locale!) <li>Initial JTree support. <li>Include source in base file release. </ul> <h3>Bug Fixes</h3> <ul> <li>Fix step insertion bugs when the code under test is not yet launched. <li>Fix editor self-test to work properly with dynamic class reloading. With reload support, the editor no longer needs to maintain context information. <li>More robust dynamic class loader (set delegate=false in Launch). <li>Recording now works on a threaded launch. <li>Fix applet sample html page. </ul> <h2>Release 0.7.2 (020830)</h2> <ul> <li>Include docs in base file release. <li>Reduce robot auto-delay times to speed up test playback; most significant effect can be seen in text playback. All tests, recordings, and actions are significantly more robust. <li>Fix rather annoying bug which caused recording to fail when closing a dialog. <li>Ensure recording failures don't drive the editor batty, and provide the failure information in bug report format. </ul> <h2>Release 0.7.1 (020826)</h2> <ul> <li>Added support for providing bug reporting information in exceptions, especially for failed recordings. <li>Robot after-event delay may now be set as a property, abbot.robot.auto_delay. <li>Dynamic class loader now uses the Class-Path from the manifest (if available) when loading jar files. <li>Added Frame/Dialog move/resize/iconify support (and tests). <li>Added JTabbedPane support (and tests). <li>Added class paths to jar files to facilitate launching (no longer need to set a long class path explicitly). <li>Fix resource loading from custom class paths (SwingSet2 now loads properly) <li>Default to non-reloading class loader. Fixed several issues when reloading is enabled. <li>Add JComboBox recorder, cleaned up JComboBoxTester (and tests). </ul> <h3>Known bugs</h3><br> Several recorder tests are known to fail on linux and w32. Some are timing-related and some are not.<br> <h2>Release 0.7 (020726)</h2> <ul> <li>Use a more robust component search mechanism using weighted propeties; store more attributes in auto-generated component references, but still work well with minimal hand-entered ones. <li>Launch application automatically when recording, if not already launched. <li>Allow classpath to be specified directly in the Launch step. <li>Use reloading class loader for launching classes. <li>Added support for applets under Sun's applet viewer, and an applet example (kelvinr). </ul> <h2>Release 0.6.2 (020627)</h2> <ul> <li>Added support for auto-formatting of dialogs and tooltips (TextFormat). <li>Fixed annoying drive A: bug on w32. <li>Added more recorder and tester tests, including a full test suite. <li>Improve launching of the GUI under test. <li>Many w32 event capture/playback bugfixes, especially popups and key capture. <li>Split editor code into model/view (onthemark,kgirard) <li>Added a filter for Component properties (jeffg). <li>Added scrolling action for JComponent (kgirard). <li>Changed menu structure for consistency (kgirard). <li>Added icons, accelerator keys, and mnemonics for most menu items (kgirard). </ul> <h2>Release 0.6.1 (020528)</h2> <ul> <li>Fix script paths for examples to fit new directory structure. <li>Fixed semantic recorder. Now correctly captures window show/hide/activate, click, key, menu, popup, drag, and drop. <li>Completed recorder tests. These have been run on OSX, w32, and linux x86. </ul> <h2>Release 0.6 (020522)</h2> <ul> <li>Support relative script paths for embedded scripts. <li>Added better support for capturing semantic events (SemanticRecorder). <li>Directly handle Drag & Drop semantic events (not done yet). <li>Better heuristics and debugging for component reference lookup. <li>Added tests for ComponentTester and ComponentRecorder classes. <li>Revised package hierarchy, since only a few classes have anything to do with JUnit. </ul> <h2>Release 0.5 (020416)</h2> <ul> <li>Added JComboBox actions (still need recorder support). <li>Added methods for documentation of ComponentTester actions (menus, arguments, icons, etc.). </ul> <h2>Release 0.4</h2> <ul> <li>Allow top-level script to continue even if sub-sequences fail. <li>Allow movement of individual script steps. <li>Failures are now colorized to explicitly highlight failed steps. <li>Event Stream recorder can parse more semantic events and eliminates unneeded events. <li>Added a cursor to the script editor table. </ul> <h2>Release 0.3 (2002/04/07)</h2> <ul> <li>Drag events are now captured in the Event Stream recorder. <li>ESC now cancels any recording in progress. <li>Added launch/terminate step for scripts so that scripts may be run independently of junit test cases/suites. It's also a lot easier to start from scratch now, no testsuite or testcase required. </ul> <h2>Release 0.2 (2002/04/03)</h2> <ul> <li>Allow regexp matches in string comparisons. <li>Component references are now specific to the current script context. <li>Added component hierarchy browser. <li>A new simple GUI component test suite example (FontChooser). <li>System.exit handling prevents an application under test from killing the editor. </ul> <h2>Release 0.1 (2002/03/22)</h2> Release for preliminary interface feedback.<p> </td> </tr> </table> </html> <!-- Local variables: eval: (add-hook 'write-file-hooks 'time-stamp) time-stamp-start: "<meta name=\"date\" content=\"" time-stamp-format: "%:y-%02m-%02d" time-stamp-end: "\">" End: --> --- news.html DELETED --- --- NEW FILE: news.shtml --- <html> <head> <title>Abbot News</title> <meta name="authors" content="Timothy Wall"> <meta name="description" content="Latest Abbot news."> <meta name="date" content="2005-09-16"> <link rel="stylesheet" type="text/css" href="stylesheet.css"/> </head> <body> <table border="0" width="100%" cellpadding="0" cellspacing="0"> <tr> <td width="146" valign="top"> <!--#include virtual="/doc/topics.shtml" --> </td> <td> <div class=Section1> <p class=MsoNormal align=center style='text-align:center'><i><span style='color:lime'>A</span></i><i><span style='color:red'>b</span></i><i><span style='color:lime'>b</span>ot framework for automated testing of Java GUI components and programs</i><br> All materials Copyright © 2002-2005 <a href="mailto:twall_AT_users.sf.net">Timothy Wall</a>, All Rights Reserved</p> <p align=center style='text-align:center'>This version 1.0.0rc1 (050916)</p> <h2>NEWS</h2> <ul> <li><b>09/16/2005</b> 1.0.0rc1 AWT is out. <li><b>04/04/2005</b> French keymap, thanks jean Thieser. <li><b>02/22/2005</b> Fixtures are in. Get 'em hot from CVS. <li><b>01/24/2005</b> Added an example custom tester for the <a href=http://www.jgraph.com>JGraph</a> component. <li><b>12/29/2004</b> Thanks to N. Stargardt and kaz for German and Japanese keymaps, respectively. <li><b>12/06/2004</b> Please submit keymaps for non-US locales. Run abbot.tester.MapGenerator to generate a keymap for your locale. <li><b>11/11/2004</b> Getting closer to 1.0. Need to finish built-in fixtures, then it will go out. Unfortunately, I'm really busy with other things... <li><b>9/23/2004</b> Translations may use '&' to indicate mnemonics, e.g. &File (see <code> <a href=api/abbot/editor/widgets/Mnemonic.html#getMnemonic(java.lang.String)>abbot.editor.widgets.Mnemonic</a></code> for details). <li><b>9/11/2004</b> A keymap generator has been added to CVS and a custom keymap for de_CH (thanks to Christian Heldstab). Please submit keymaps for your locale if you're having difficulty generating certain characters with actionKeyStroke(). <li><b>7/27/2004</b> Use arbitrary Java expressions with the Expression Step. If you can't do it with actions and assertions, drop down to scripted Java. <a href=http://www.beanshell.org>Beanshell</a> is used for the interpreter. <li><b>7/21/2004</b> Clover test code coverage reports are enabled and <a href=reports/clover/pkgs-summary.html>published</a>. So are JUnit test results, <a href=reports/junit>by platform</a>. <li><b>7/20/2004</b> Working hard to get 1.0 out. Target date is 9/30. <li><b>6/17/2004</b> The freeze/lockup/slowdown on recording/shift-F1 has been fixed (thanks to jkdoyle). Get it from CVS. <li><b>6/17/2004</b> Robot now works properly when AWT popup menus are active. We still haven't a clue where such things actually reside on the screen, but at least your test fixture won't freeze if you activate one. For those interested in the hacks, see the additions to abbot.util.AWT. <li><b>6/14/2004</b> 0.12.3 is out. Those SWT guys better hurry or they'll miss the 1.0 release :) <li><b>6/10/2004</b> I'm working on getting 0.12.3 out after ensuring self-tests pass. I'm not the only one that would like to see Jim Doyle's performance fix get applied soon. It'll make it into 0.12.4 (0.13?) for certain. <li><b>5/3/2004</b> Vincent Massol has contributed an Abbot plugin and Web Start script launcher (for testing Web Start apps). It is available from the Maven site at http://maven.apache.org/reference/plugins/abbot. <li><b>5/2/2004</b> Several books are now out that include some treatment of Abbot. Please post to <a href="mailto:abb...@li...">abbot-users</a> if you see one worth reading. <li><b>3/29/2004</b> I'd like to get individual test class output from junitreport, but it's not feasible to fork each suite into a separate VM. Any junitreport gurus out there? <li><b>3/24/2004</b> Abbot/SWT is available from CVS. Tom's still cleaning up the build, but feel free to try it out and provide feedback. <li><b>3/18/2004</b> Oops, make that <b>0.12.2</b>. <li><b>3/18/2004</b> <b>0.12.1</b> is out. Mostly a bug-fix release. <li><b>3/17/2004</b> A <a href=http://maven.apache.org>Maven</a> plugin for Abbot is in the works, as well as a launcher for testing Java Web Start apps, thanks to Vincent Massol (vmassol). <li><b>3/9/2004</b> The framework test suite (abbot.UnitTestSuite) is now auto-generated, for use directly or from the ant "test" target. <li><b>3/3/2004</b> An applet launcher step now handles setup for applet testing. Use the "appletviewer" step instead of a launch step. <li><b>2/24/2004</b> Build version 0.12.0 now available. This is targeted towards hand-coded tests. <li><b>2/18/2004</b> Costello: the component browser has gotten a facelift, with custom component icons which make it a little easier to read the hierarchy. Component reference attributes are now editable in a table (instead of raw XML). Custom component icons will be automatically loaded if they're named the right thing in the right place, see abbot.editor.ComponentTreeIcons.java for details. <li><b>2/18/2004</b> abbot.finder.*: this new package provides a completely revamped ComponentFinder which is a whole lot easier to use than the old one. It is specifically designed for use in unit tests (the old one was designed for generic script access, and putting it to use in unit tests didn't really help anybody). <li><b>2/18/2004</b> Component references and lookup have been refactored significantly. <b>This may have some effect on existing scripts.</b> Instead of capturing a minimal set of attributes, references now store as many as possible. The "tag" attribute is now deprecated, replaced by an explicitly named attribute; if the tag was the component's title, the reference will now have an explicit "title" attribute. The <code>getTag()</code> method also caused a lot of unnecessary recursion during lookups. <li><b>2/18/2004</b> Web site reorganized. Duh. <b> <li><b>2/17/2004</b> JUnit upgraded to 3.8.1.<b> </ul> <div align=center> <table border=0 cellpadding=0> <tr> <td> <p><a href="http://www.jars.com/"><img border=0 width=103 height=58 src="http://www.jars.com/images/java_registered.gif"></a></p></td> <td> </td> <td> <p><i>Read all about it at</i><br> <a href="http://sourceforge.net"><span style='color:blue;text-decoration: none;text-underline:none'><img border=0 width=210 height=62 id="_x0000_i1030" src="http://sourceforge.net/sflogo.php?group_id=50939&type=5" alt="SourceForge Logo"></span></a></p></td> <td> </td> <td> <p class=MsoNormal align=center style='text-align:center'><a href="http://groups.yahoo.com/group/java-gui-testing/join"><span style='color:blue;text-decoration:none;text-underline:none'><img border=0 width=91 height=52 id="_x0000_i1031" src="http://groups.yahoo.com/img/ui/join.gif"></span><br> Click to subscribe to java-gui-testing</a></p></td> </tr> </table> </div> </div> </td> </tr> </table> </body> </html> <!-- Local variables: eval: (add-hook 'write-file-hooks 'time-stamp) time-stamp-start: "<meta name=\"date\" content=\"" time-stamp-format: "%:y-%02m-%02d" time-stamp-end: "\">" End: --> --- NEW FILE: Tutorial-1.shtml --- <html> <head> <title>Unit Testing A Single GUI Component</title> <meta name="authors" content="Timothy Wall"> <meta name="keywords" content="java, gui, test, software, automated, junit, jfcunit, swingunit, awtunit, record, playback, qa, quality"> <meta name="description" content="How to use the Abbot Java GUI Test Framework to unit test a single GUI component."> <meta name="date" content="2005-07-24"> </head> <table border="0" width="100%" cellpadding="0" cellspacing="0"> <tr> <td width="146" valign="top"> <!--#include virtual="/doc/topics.shtml" --> </td> <td> <center><i> <font color="#00CC00">A</font><font color="#FF0000">b</font><font color="#00CC00">b</font>ot framework for testing Java GUI components and programs</i><br> All materials Copyright © 2002-2004 All Rights Reserved <a href=mailto:twall_AT_users.sourceforge.net>Timothy Wall</a><br><p> This version 1.0.0rc1 (050916) </center> <h1>Tutorial 1: Unit Testing A Single GUI Component</h1> So you're a fan of test-first development. Let's write a test for a component that hasn't been written yet (well, it has, but let's pretend). The component we want to write is a button with the following behavior:<p> <ul> <li>Points in one of four directions <li>Fires an event when pressed once <li>Fires continuous events when held down </ul> With this simple spec, we can outline a unit test for it:<p> <blockquote><code><pre> package example; import junit.extensions.abbot.*; import abbot.tester.*; // ComponentTestFixture automatically handles disposal of GUI components, // among (many) other things. Always use it when testing GUI components. public class ArrowButtonTest extends ComponentTestFixture { public ArrowButtonTest(String name) { super(name); } public static void main(String[] args) { TestHelper.runTests(args, ArrowButtonTest.class); } } </pre></code></blockquote> <p> We'll need to put the component into a frame for most tests, but there's already a "showFrame" method in the ComponentTestFixture that we inherit. That method puts a nice fat border around our component to make it visible, although that's not strictly necessary. We'll need a ComponentTester to play actions on our component, so add that to the setup:<p> <blockquote><code><pre> private ComponentTester tester; protected void setUp() { tester = new ComponentTester(); } protected void tearDown() { // Default JUnit test runner keeps references to Tests for its // lifetime, so TestCase fields won't be GC'd for the lifetime of the // runner. tester = null; } </pre></code></blockquote> <p> Now write the first test, which ensures that an action is fired when the button is clicked. <blockquote><code><pre> import java.awt.event.*; import javax.swing.*; ... private String clickType; public void testClick() { ActionListener al = new ActionListener() { public void actionPerformed(ActionEvent ev) { clickType = ev.getActionCommand(); } }; ArrowButton left = new ArrowButton(ArrowButton.LEFT); ArrowButton right = new ArrowButton(ArrowButton.RIGHT); ArrowButton up = new ArrowButton(ArrowButton.UP); ArrowButton down = new ArrowButton(ArrowButton.DOWN); left.addActionListener(al); right.addActionListener(al); up.addActionListener(al); down.addActionListener(al); JPanel pane = new JPanel(); pane.add(left); pane.add(right); pane.add(up); pane.add(down); // ComponentTestFixture provides the frame showFrame(pane); clickType = null; tester.actionClick(left); assertEquals("Action failed (left)", ArrowButton.LEFT, clickType); clickType = null; tester.actionClick(right); assertEquals("Action failed (right)", ArrowButton.RIGHT, clickType); clickType = null; tester.actionClick(up); assertEquals("Action failed (up)", ArrowButton.UP, clickType); clickType = null; tester.actionClick(down); assertEquals("Action failed (down)", ArrowButton.DOWN, clickType); } </pre></code></blockquote> If we were writing the ArrowButton from scratch, we'd have identified by this test a few things that we need: <p> <ul> <li>A set of constants for the arrow direction. <li>An addActionListener method (and probably a remove as well). <li>A constructor that takes the direction as its only argument. </ul> Well, let's assume we went off and implemented those functions (this tuturial is one about testing GUI components, not unit testing or XP in general). After compiling, run the example.ArrowButtonTest class, and repeat the code/test/debug cycle until the test passes. <p> <blockquote><code><pre> java -Dabbot.robot.auto_delay=200 -cp classes example.ArrowButtonTest<br> </pre></code></blockquote> Note that the auto-delay setting is only there to prevent the test from running so fast you don't see it; normally you can omit it. <p> That leaves only the last bullet to test, repeated events when held down. <p> <blockquote><code><pre> private int count = 0; public void testRepeatedFire() { ArrowButton arrow = new ArrowButton(ArrowButton.LEFT); ActionListener al = new ActionListener() { public void actionPerformed(ActionEvent ev) { ++count; } }; arrow.addActionListener(al); showFrame(arrow); Dimension size = arrow.getSize(); // Hold the button down for 5 seconds tester.mousePress(arrow); tester.actionDelay(5000); tester.mouseRelease(); assertTrue("Didn't get any repeated events", count > 1); } </pre></code></blockquote> Run the test case again, and (if you were writing ArrowButton from scratch) the second test would fail. Go back and implement the repeated fire function in example.ArrowButton, and debug and test until testRepeatedFire passes. Now you've increased your confidence that subsequent changes to ArrowButton which break the desired behavior will break the tests and you'll know about it. You've also just documented the expected behavior, which can mean the difference between someone understanding your code or someone using it incorrectly based on out-of-date or missing documentation. <p> See the full source code for the component <a href=../src/example/ArrowButton.java>example.ArrowButton<a>, and its TestCase, <a href=../src/example/ArrowButtonTest.java>example.ArrowButtonTest<a>. <p> <center> <i>This project helped in a big way by</i><br> <A href="http://sourceforge.net"> <IMG src="http://sourceforge.net/sflogo.php?group_id=50939&type=5" width="210" height="62" border="0" alt="SourceForge Logo"></A> </center> </td> </tr> </table> </html> <!-- Local variables: eval: (add-hook 'write-file-hooks 'time-stamp) time-stamp-start: "<meta name=\"date\" content=\"" time-stamp-format: "%:y-%02m-%02d" time-stamp-end: "\">" End: --> --- user-guide.html DELETED --- --- topics.html DELETED --- --- examples.html DELETED --- --- NEW FILE: Tutorial-3.shtml --- <html> <head> <title>Testing A Group of Components (Part II)</title> <meta name="authors" content="Timothy Wall"> <meta name="keywords" content="java, gui, test, software, automated, junit, jfcunit, swingunit, awtunit, record, playback, qa, quality"> <meta name="description" content="How to use the Abbot Java GUI Test Framework to test a group of components using recording and scripts."> <meta name="date" content="2005-07-24"> </head> <table border="0" width="100%" cellpadding="0" cellspacing="0"> <tr> <td width="146" valign="top"> <!--#include virtual="/doc/topics.shtml" --> </td> <td> <center><i> <font color="#00CC00">A</font><font color="#FF0000">b</font><font color="#00CC00">b</font>ot framework for testing Java GUI components and programs</i><br> All materials Copyright © 2002-2004 All Rights Reserved <a href=mailto:twall_AT_users.sourceforge.net>Timothy Wall</a><br><p> This version 1.0.0rc1 (050916) </center> <h1>Tutorial 3: Testing A Group of Components (Part II)</h1> <center> <i>This project accelerated by</i><br> <A href="http://sourceforge.net"> <IMG src="http://sourceforge.net/sflogo.php?group_id=50939&type=5" width="210" height="62" border="0" alt="SourceForge Logo"></A> </center> </td> </tr> </table> </html> <!-- Local variables: eval: (add-hook 'write-file-hooks 'time-stamp) time-stamp-start: "<meta name=\"date\" content=\"" time-stamp-format: "%:y-%02m-%02d" time-stamp-end: "\">" End: --> --- NEW FILE: topics.shtml --- <html> <head> <base target=MainFrame> <title>Abbot Topics</title> <meta name="authors" content="Timothy Wall"> <meta name="description" content="Abbot Topics."> <meta name="date" content="2005-02-23"> <link rel="stylesheet" type="text/css" href="stylesheet.css"/> </head> <body> <div class=Section1> <h3><span style='color:lime'>A</span><span style='color:red'>b</span><span style='color:lime'>b</span><span style='color:black'>ot<br> Java GUI Test Framework</span></h3> <h3><span style='font-size:10.0pt;'><a href="news.shtml" target="_self"><b><span style='font-size:12.0pt'>News</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="overview.shtml" target="_self"><b><span style='font-size:12.0pt'>Overview</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="http://sourceforge.net/projects/abbot" target="_self"><b><span style='font-size:12.0pt'>Project Page</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="download.shtml" target="_self"><b><span style='font-size:12.0pt'>Download</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="RELNOTES.shtml" target="_self"><b><span style='font-size:12.0pt'>Release Notes</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="api/overview-summary.html#overview_description" target="_self"><b><span style='font-size:12.0pt'>Javadoc API</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="http://abbot.sourceforge.net/wiki" target="_self"><b><span style='font-size:12.0pt'>Wiki</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="quick-start.shtml" target="_self"><b><span style='font-size:12.0pt'>Quick Start</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="user-guide.shtml" target="_self"><b><span style='font-size:12.0pt'>User Guide</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="examples.shtml" target="_self"><b><span style='font-size:12.0pt'>Examples</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="tutorials.shtml" target="_self"><b><span style='font-size:12.0pt'>Tutorials</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="help.shtml" target="_self"><b><span style='font-size:12.0pt'>Help</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="FAQ.shtml" target="_self"><b><span style='font-size:12.0pt'>FAQ</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="reports/junit" target="_self"><b><span style='font-size:12.0pt'>Test Results</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'><a href="reports/clover/pkgs-summary.html" target="_self"><b><span style='font-size:12.0pt'>Test Coverage</span></b></a></span></h3> <h3><span style='font-size:10.0pt;'> </span></h3> </div> </body> </html> <!-- Local variables: eval: (add-hook 'write-file-hooks 'time-stamp) time-stamp-start: "<meta name=\"date\" content=\"" time-stamp-format: "%:y-%02m-%02d" time-stamp-end: "\">" End: --> --- overview.html DELETED --- --- help.html DELETED --- --- NEW FILE: download.shtml --- <html> <head> <title>Abbot Downloads</title> <meta name="authors" content="Timothy Wall"> <meta name="keywords" content="abbot download links"> <meta name="description" content="Download links for Abbot."> <meta name="date" content="2005-07-24"> </head> <body bgcolor=white lang=EN-US link="#660000" vlink="#003399" style='tab-interval: .5in'> <table border="0" width="100%" cellpadding="0" cellspacing="0"> <tr> <td width="146" valign="top"> <!--#include virtual="/doc/topics.shtml" --> </td> <td> <div class=Section1> <p class=MsoNormal align=center style='text-align:center'><i><span style='color:#00CC00'>A</span></i><i><span style='color:red'>b</span></i><i><span style='color:#00CC00'>b</span>ot framework for automated testing of Java GUI components and programs</i><br> All materials Copyright © 2002-2004 <a href="mailto:twall_AT_users.sf.net">Timothy Wall</a>, All Rights Reserved</p> <p align=center style='text-align:center'>This version 1.0.0rc1 (050916)</p> <h2>Download</h2> <p>The latest abbot package is available in [<a href="http://prdownloads.sf.net/abbot/abbot-1.0.0rc1.tgz?download"><span style='color:black'>tgz</span></a>] [<a href="http://prdownloads.sf.net/abbot/abbot-1.0.0rc1.zip?download"><span style='color:black'>zip</span></a>] formats, which includes source. You can also browse the files available at <a href="http://sourceforge.net/project/showfiles.php?group_id=50939">SourceForge</a>, which include IDE plugins.<a name=QuickStart></a><a name=Tutorials></a></p> <div class=MsoNormal align=center style='text-align:center'><span style='font-family:"Times New Roman";color:windowtext'><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><![endif]--><!--[if gte mso 9]><xml> <v:shape id="_x0000_i1055" type="#_x0000_t75" style='width:627.75pt;height:7.2pt' o:hralign="center" o:hr="t"> <v:imagedata src="" o:title="strrulec"/> </v:shape></xml><![endif]--><![if !mso]><img border=0 height=10 width="100%" src="quick-start_files\image003.gif" alt=--- v:shapes="_x0000_i1055"><![endif]></span></div> <div align=center> <table border=0 cellpadding=0 width="100%" style='width:100.0%;mso-cellspacing: 1.5pt;mso-padding-alt:0in 0in 0in 0in'> <tr> <td style='padding:.75pt .75pt .75pt .75pt'> <p class=MsoNormal align=center style='text-align:center'><a href="http://www.jars.com/"><span style='color:blue;text-decoration:none; text-underline:none'><img border=0 width=103 height=58 id="_x0000_i1052" src="http://www.jars.com/images/java_registered.gif"></span></a></p> </td> <td style='padding:.75pt .75pt .75pt .75pt'> <p class=MsoNormal align=center style='text-align:center'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> </td> <td style='padding:.75pt .75pt .75pt .75pt'> <p class=MsoNormal align=center style='text-align:center'><i>Get the latest at<o:p></o:p></i></p> <p class=MsoNormal align=center style='text-align:center'><a href="http://sourceforge.net"><span style='color:blue;text-decoration:none; text-underline:none'><img border=0 width=210 height=62 id="_x0000_i1053" src="http://sourceforge.net/sflogo.php?group_id=50939&type=5" alt="SourceForge Logo"></span></a></p> </td> <td style='padding:.75pt .75pt .75pt .75pt'> <p class=MsoNormal align=center style='text-align:center'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> </td> <td style='padding:.75pt .75pt .75pt .75pt'> <p class=MsoNormal align=center style='text-align:center'><a href="http://groups.yahoo.com/group/java-gui-testing/join"><span style='color:blue;text-decoration:none;text-underline:none'><img border=0 width=91 height=52 id="_x0000_i1054" src="http://groups.yahoo.com/img/ui/join.gif"></span><span style='color:blue'><br> </span>Click to subscribe to java-gui-testing</a></p> </td> </tr> </table> </div> <p><a href="mailto:twall_AT_users.sf.net"></a></p> </div> </td> </tr> </table> </body> </html> <!-- Local variables: eval: (add-hook 'write-file-hooks 'time-stamp) time-stamp-start: "<meta name=\"date\" content=\"" time-stamp-format: "%:y-%02m-%02d" time-stamp-end: "\">" End: --> --- FAQ.html DELETED --- --- Tutorial-1.html DELETED --- --- download.html DELETED --- --- NEW FILE: FAQ.shtml --- <html> <head> <title>Abbot FAQ</title> <meta name="authors" content="Timothy Wall"> <meta name="keywords" content="java, gui, test, testing, unit, software, automated, junit, jfcunit, swingunit, awtunit, record, playback, qa, quality"> <meta name="description" content="Abbot Java GUI Testing Framework: Record and play back actions to test your Java GUI, suitable for use by developers and QA."> <meta name="date" content="2005-07-24"> </head> <table border="0" width="100%" cellpadding="0" cellspacing="0"> <tr> <td width="146" valign="top"> <!--#include virtual="/doc/topics.shtml" --> </td> <td> <center><i> <font color="#00CC00">A</font><font color="#FF0000">b</font><font color="#00CC00">b</font>ot framework for automated testing of Java GUI components and programs</i><br> All materials Copyright © 2002-2004 <a href=mailto:twall_AT_users.sf.net>Timothy Wall</a>, All Rights Reserved<br><p> This version 1.0.0rc1 (050916)<br> </center> <h1>FAQ: <i>Frequently Asked Questions, and their answers</i> </h1> <h3>Creating Tests</h3> <ul> <li><a href="#q100">Creating Test Cases</a> <li><a href="#q101">Setting the classpath</a> <li><a href="#q102">Testing Applets</a> <li><a href="#q103">Customizing Abbot</a> <li><a href="#q104">Setting VM arguments</a> <li><a href="#q105">Adding assertions about a modal Dialog</a> </ul> <h3>Running Tests</h3> <ul> <li><a href="#q200">Running scripts under JUnit</a> <li><a href="#q201">Costello launches my app, but then nothing happens</a> <li><a href="#q202">When running my script I get an InvalidScriptException complaining about a property not recognized for SAX</a> <li><a href="#q203">Can I run tests without making my machine unusable (running tests headless/without a display)?</a> <li><a href="#q204">Can I match things against regular expressions?</a> <li><a href="#q205">How can I check a multi-line text field value?</a> <li><a href="#q206">Why do I get IllegalArgumentExceptions when generating key input?</a> </ul> <h3>Contributions</h3> <ul> <li><a href="#q300">How can I contribute?</a> </ul> <hr> <a name=q100></a> <h3>When should I use an Abbot script versus a plain old JUnit TestCase?</h3> Usually if you are writing unit tests or tests for small groups of components, you should use a <a href="api/junit/extensions/abbot/ComponentTestFixture.html">ComponentTestFixture</a> which is derived from <a href="http://www.junit.org/junit/javadoc/3.8.1/junit/framework/TestCase"> junit.framework.TestCase</a>, explicitly invoking actions and assertions on your small number of gui components. See <a href=Tutorial-1.html>this tutorial</a> for an example of this approach.<p> Otherwise use scripts, since it lowers the complexity of the overall test and makes it much easier to edit. The script provides easy mnemonics for referenced components. It also abstracts the test into simple actions and assertions. These elements become much less obvious within a long test written entirely in Java code.<p> <a name=q102></a> <h3>How do I test an applet?</h3> Instead of a <code>Launch</code> step, use the <code>Appletviewer</code> step. It will run your applet under appletviewer. You can specify the <code>applet</code> tag attributes as well as parameters for the applet. <a name=q103></a> <h3>I don't see the functions I need.</h3> The <a href=api/abbot/script/Call.html>Call</a> step is very flexible; you can specify an arbitrary class and invoke a method on it, or you can invoke any method on an existing ComponentTester or Component. <p> Abbot is also very extensible. You can add custom <a href=api/abbot/script/Step.html>Step</a> classes that do exactly what you want, <a href=api/abbot/script/parsers/package.html>custom p... [truncated message content] |