<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="Author" content="Build">
   <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
   <title>The Workbench Test Framework</title>
</head>
<body>

<h3>
Plugin Test Practices</h3>
In our own testing we have discovered a number of common test patterns.&nbsp;
In order to encourage a consistent approach for testing they are published
below.
<p><b>Setters, Getters and Commands</b>
<p>Scenario: You want to test setters, getters, and commands in an interface.
<p>Method: Call the setter or command which affects the object state.&nbsp;
Call the getter to verify that state.&nbsp; If you can't see this state
see to "Piercing an Interface".
<p><b>Subclass Superclass</b>
<p>Scenario: You want to test D, which is a subclass of B.
<p>Method: Implement a test case for B called BTest.&nbsp; Then create
a subclass of BTest called DTest which tests D the additional methods on
D.&nbsp; Add a factory method to BTest to create any required test objects
which may be specific to the test case and override it in DTest.&nbsp;
When this approach is taken you inherit all of the BTest methods within
the subclass DTest.
<p><b>Event Notification</b>
<p>Scenario: You want to test Source, a class which fires events when a
particular situation occurs.
<p>Method: Implement a listener for Source which can record the reception
of events. Then write a test class for Source called SourceTest which does
something which should cause those events to fire.&nbsp; Verify the reception
of events afterwards.
<p>Additional Tips: The CallHistory class in org.eclipse.ui.tests.util can
be used to record the methods invoked in a target object.&nbsp; If the
listener can be added then test the removal of the listener also.&nbsp;
Make sure that events are not received after the listener has been removed.
<p><b>Avoiding Global State</b>
<p>Scenario: In Eclipse the workbench is a global object.&nbsp; Unfortunately,
this means that one test case may modify that state of the workbench and
affect the outcome of other unrelated test cases.&nbsp; How can you avoid
this problem?
<p>Method: If the test case modifies the state of a window or something
in the window you should create a new window as part of the setUp for the
test case.&nbsp; Run the test code within that window and then close the
test window in the tearDown method.&nbsp; The modified state will be discarded
when the window is closed.
<p>Additional Tips: The UITestCase class in org.eclipse.ui.tests.util can
be used as a superclass for your test case.&nbsp; It provides useful methods
for the creation of new windows, pages, etc, and their disposal.
<p><b>Piercing the Encapsulation</b>
<p>Scenario: To test the behavior of commands which modify the state of
the object when there are no public interfaces to query that state.
<p>Method: If possible, cast the interface to a concrete class with additional
public methods.&nbsp; For instance, in the workbench the underlying structure
for IWorkbench is exposed in Workbench.&nbsp; Given a Workbench object,
you can get the menu, toolbar, etc, and interact directly with those objects
to verify their state or invoke them directly.
<p>Additional Tips: The ActionUtil class in org.eclipse.ui.tests.util can
be used to invoke actions within a window or menu manager.
<p><b>Extension Creation</b>
<p>Scenario: You want to test the creation of an extension.&nbsp; For instance,
the IWorkbenchPage has a method called openEditor which creates an editor
extension, and another called showView which creates a view extension.&nbsp;
How do you test these?
<p>Method: Obviously we can test these methods by invoking them.&nbsp;
However, each of them take an editor or view id.&nbsp; Which id's do we
use?&nbsp; If we reference views and editors which exist within the Workbench
UI Standard Components project the test case is vulnerable to change in
those components.&nbsp; But we're not testing those standard components,
we're actually testing IWorkbenchPage, so it is better to implement some
light weight mock views and editors which do nothing more than record their
own creation and lifecycle.
<p><b>Extension Lifecycle</b>
<p>Scenario: Within the workbench there are various interfaces, such as
IViewPart, which are defined as API and implemented by plugin code.&nbsp;
There is no need to test the implementation of an interface like this if
you define it and expect others to implement it.&nbsp; However, it is important
to test the lifecycle of the object as implemented by those objects which
create and call the interface implementation.
<p>Method: Define a class X which implements the interface and records
the invocation of various methods.&nbsp; Create a scenario where this class
is instantiated and should receive events.&nbsp; Afterwards, test that
those methods were called.
<p>Additional Tips: The CallHistory class in org.eclipse.ui.tests.util can
be used to record the methods invoked in a target object.
<p><b>Session Persistence</b>
<p>Scenario: You want to test the persistence of state from one session
to the next.
<p>Method: You need to create two test cases.&nbsp; One test case will
set up the state.&nbsp; The other will verify the state.&nbsp; Run them
sequentially in two separate processes.
<p><b>Testing Mixins</b>
<p>Scenario: Within the workbench there are many classes which implement
a particular interface.&nbsp; Given the responsability defined by the class
and the interfaces separately, how do you organize the test cases?
<p>Method: You may choose to use a one to one rule of thumb.&nbsp; Create
one test case class for each class or interface in the mixin.&nbsp; This
hierarchical separation makes it easier to reuse each test case when an
interface is implemented by more than one class.&nbsp; It also simplifies
the accounting required to track which test cases have been written.
<p><b>Where Do I Stop?</b>
<p>Scenario: The workbench has many layers.&nbsp; If you are a plugin developer
what are the bounds of the area you should test?
<p>Method: In general, you should assume that everything you rely upon
works.&nbsp; If you don't take this approach you will spend endless hours
testing code written by other people. For instance, in the workbench UI
we don't test JFace, SWT, or core.&nbsp; They have their own test suites
and are assumed to work.&nbsp; On the other hand, you should at least write
tests for every API which you provide to others.&nbsp; In Eclipse we have
very strong rules for API compatability, and your own test cases allow
you to change the implementation of API with some confidence.
<br>&nbsp;
<br>&nbsp;
</body>
</html>
