Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/Development/Testing/StrawManProposal"
(→[http://en.wikipedia.org/wiki/Hollywood_Principle The Hollywood Principle]) |
(→[http://en.wikipedia.org/wiki/Hollywood_Principle The Hollywood Principle]) |
||
Line 17: | Line 17: | ||
'''<font color="#7f0055">import</font>'''<font color="#7f0055"> java</font><font color="#7f0055">.</font><font color="#7f0055">util</font><font color="#7f0055">.</font><font color="#7f0055">Properties</font><font color="#7f0055"><nowiki>;</nowiki></font> | '''<font color="#7f0055">import</font>'''<font color="#7f0055"> java</font><font color="#7f0055">.</font><font color="#7f0055">util</font><font color="#7f0055">.</font><font color="#7f0055">Properties</font><font color="#7f0055"><nowiki>;</nowiki></font> | ||
− | + | <font color="#3f7f59">// JUnit imports</font> | |
'''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">junit</font><font color="#7f0055">.</font><font color="#7f0055">Before</font><font color="#7f0055"><nowiki>;</nowiki></font> | '''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">junit</font><font color="#7f0055">.</font><font color="#7f0055">Before</font><font color="#7f0055"><nowiki>;</nowiki></font> | ||
'''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">junit</font><font color="#7f0055">.</font><font color="#7f0055">BeforeClass</font><font color="#7f0055"><nowiki>;</nowiki></font> | '''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">junit</font><font color="#7f0055">.</font><font color="#7f0055">BeforeClass</font><font color="#7f0055"><nowiki>;</nowiki></font> | ||
Line 27: | Line 27: | ||
'''<font color="#7f0055">import</font>'''<font color="#7f0055"> static org</font><font color="#7f0055">.</font><font color="#7f0055">junit</font><font color="#7f0055">.</font><font color="#7f0055">Assert</font><font color="#7f0055">.</font><font color="#7f0055">assertTrue</font><font color="#7f0055"><nowiki>;</nowiki></font> | '''<font color="#7f0055">import</font>'''<font color="#7f0055"> static org</font><font color="#7f0055">.</font><font color="#7f0055">junit</font><font color="#7f0055">.</font><font color="#7f0055">Assert</font><font color="#7f0055">.</font><font color="#7f0055">assertTrue</font><font color="#7f0055"><nowiki>;</nowiki></font> | ||
− | + | <font color="#3f7f59">// ntf imports</font> | |
'''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">eclipse</font><font color="#7f0055">.</font><font color="#7f0055">persistence</font><font color="#7f0055">.</font><font color="#7f0055">ntf</font><font color="#7f0055">.</font><font color="#7f0055">TestContext</font><font color="#7f0055"><nowiki>;</nowiki></font> | '''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">eclipse</font><font color="#7f0055">.</font><font color="#7f0055">persistence</font><font color="#7f0055">.</font><font color="#7f0055">ntf</font><font color="#7f0055">.</font><font color="#7f0055">TestContext</font><font color="#7f0055"><nowiki>;</nowiki></font> | ||
'''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">eclipse</font><font color="#7f0055">.</font><font color="#7f0055">persistence</font><font color="#7f0055">.</font><font color="#7f0055">ntf</font><font color="#7f0055">.</font><font color="#7f0055">TestContextRunner</font><font color="#7f0055"><nowiki>;</nowiki></font> | '''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">eclipse</font><font color="#7f0055">.</font><font color="#7f0055">persistence</font><font color="#7f0055">.</font><font color="#7f0055">ntf</font><font color="#7f0055">.</font><font color="#7f0055">TestContextRunner</font><font color="#7f0055"><nowiki>;</nowiki></font> | ||
'''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">eclipse</font><font color="#7f0055">.</font><font color="#7f0055">persistence</font><font color="#7f0055">.</font><font color="#7f0055">ntf</font><font color="#7f0055">.</font><font color="#7f0055">TestProperties</font><font color="#7f0055"><nowiki>;</nowiki></font> | '''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">eclipse</font><font color="#7f0055">.</font><font color="#7f0055">persistence</font><font color="#7f0055">.</font><font color="#7f0055">ntf</font><font color="#7f0055">.</font><font color="#7f0055">TestProperties</font><font color="#7f0055"><nowiki>;</nowiki></font> | ||
'''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">eclipse</font><font color="#7f0055">.</font><font color="#7f0055">persistence</font><font color="#7f0055">.</font><font color="#7f0055">ntf</font><font color="#7f0055">.</font><font color="#7f0055">Context</font><font color="#7f0055"><nowiki>;</nowiki></font> | '''<font color="#7f0055">import</font>'''<font color="#7f0055"> org</font><font color="#7f0055">.</font><font color="#7f0055">eclipse</font><font color="#7f0055">.</font><font color="#7f0055">persistence</font><font color="#7f0055">.</font><font color="#7f0055">ntf</font><font color="#7f0055">.</font><font color="#7f0055">Context</font><font color="#7f0055"><nowiki>;</nowiki></font> | ||
− | |||
− | + | @RunWith(TestContextRunner.class) | |
− | + | '''<font color="#7f0055">public</font>''' '''<font color="#7f0055">class</font>''' ASetOfSimpleTests { | |
@TestProperties '''<font color="#7f0055">public</font>''' '''<font color="#7f0055">static</font>''' '''<font color="#7f0055">Properties</font>''' properties; | @TestProperties '''<font color="#7f0055">public</font>''' '''<font color="#7f0055">static</font>''' '''<font color="#7f0055">Properties</font>''' properties; | ||
@TestContext(tag=<font color="#2a00ff">"context"</font>) '''<font color="#7f0055">public</font>''' '''<font color="#7f0055">static</font>''' Context<'''<font color="#7f0055">Object</font>'''> context; | @TestContext(tag=<font color="#2a00ff">"context"</font>) '''<font color="#7f0055">public</font>''' '''<font color="#7f0055">static</font>''' Context<'''<font color="#7f0055">Object</font>'''> context; | ||
</font> | </font> | ||
+ | |||
+ | There are two different things being injected by the TestContextRunner: | ||
+ | # properties found in the <tt>ntf.xml</tt> file in the user's home directory | ||
+ | # Java System '-D' properties from the command line | ||
+ | |||
+ | The name and location of the <tt>ntf.xml</tt> file can be altered by the Java System properties -Dntf.file and -Dntf.dir |
Revision as of 14:06, 22 November 2007
From the EclipseLink DevMeeting 071017, create a straw-man proposal for a new consolidated testing framework
New Testing Framework
- based on JUnit4 - Why?
- JUnit3 is at end-of-life
- Eclipse IDE has built-in support for JUnit4 tests
- while various testing frameworks have been extended, JUnit4 is extensible by design
Looked at requirements from MOXy/SDO, JPA, this is what we've got so far ...
The Hollywood Principle
Don't call us, we'll call you
The existing tests have code that is strongly coupled between setting up resources and the testing code. The NTF instead injects the resource into a tagged variable. Setting up the context for the resource is done in a separate class with its own requirements for composition/aggregation/inheritance.
// javase imports import java.util.Properties; // JUnit imports import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; // ntf imports import org.eclipse.persistence.ntf.TestContext; import org.eclipse.persistence.ntf.TestContextRunner; import org.eclipse.persistence.ntf.TestProperties; import org.eclipse.persistence.ntf.Context; @RunWith(TestContextRunner.class) public class ASetOfSimpleTests { @TestProperties public static Properties properties; @TestContext(tag="context") public static Context<Object> context;
There are two different things being injected by the TestContextRunner:
- properties found in the ntf.xml file in the user's home directory
- Java System '-D' properties from the command line
The name and location of the ntf.xml file can be altered by the Java System properties -Dntf.file and -Dntf.dir