You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Raymond Feng <en...@gmail.com> on 2008/12/10 02:48:39 UTC

Testcase templates? was: Re: Activities in Trunk - was: svn commit: r723136 - in /tuscany/java/sca: distribution/core/pom.xml modules/pom.xml

Hi,

It might be a good idea to define a set of templates to shield the test 
cases from the environment-specific node configuration and lifecycle. This 
way, the test cases can be simpler and it's possible to run them with 
different environment (JSE or OSGi) by switching the base.

We could define two modules tuscany-test and tuscany-test-equinox to host 
the base test cases. Other itests can add them as test dependencies in 
pom.xml.

The following code is something I tried locally. But I have some issues 
getting the @BeforeClass and @AfterClass version going as JUNIT tries to run 
these methods even before the static initializer of a class is called.

Thanks,
Raymond

/**
 * Base Node API based test case
 */
public abstract class NodeTestCase {
    protected final Logger logger = Logger.getLogger(getClass().getName());
    protected String compositeResource;
    protected Node node;

    protected NodeTestCase(String compositeResource) {
        super();
        this.compositeResource = compositeResource;
    }

    @Before
    public void setUp() throws Exception {
        try {
            String location = 
ContributionLocationHelper.getContributionLocation(compositeResource);
            Contribution contribution = new Contribution(location, 
location);
            NodeFactory factory = NodeFactory.newInstance();
            node = factory.createNode(compositeResource, contribution);
            node.start();
        } catch (Exception e) {
            logger.log(Level.SEVERE, e.getMessage(), e);
            throw e;
        }
    }

    @After
    public void tearDown() throws Exception {
        if (node != null) {
            node.stop();
        }
    }
}

--------------------------------------------------
From: "Mike Edwards" <mi...@gmail.com>
Sent: Friday, December 05, 2008 1:06 PM
To: <de...@tuscany.apache.org>
Subject: Activities in Trunk  - was:  svn commit: r723136 - in 
/tuscany/java/sca: distribution/core/pom.xml modules/pom.xml

[[SNIP]]

>
> So far, it is mostly a case of tweak, tweak, tweak, adjusting dependencies 
> and OSGi MANIFEST files, but in a few cases, the 2.0 APIs are different 
> from the 1.x APIs and some changes are needed - this often affects 
> testcases more than mainline module code.  One lesson from this is that I 
> think we should consider creating a tests-utils module to contain some of 
> the sequences that tests seem to need commonly - and to hide the testcase 
> code from changes in the base platform.
>
>
> Yours,  Mike. 


Re: Testcase templates? was: Re: Activities in Trunk - was: svn commit: r723136 - in /tuscany/java/sca: distribution/core/pom.xml modules/pom.xml

Posted by ant elder <an...@gmail.com>.
A simple easy way to create a started node, what a great idea ;)

Would be good to add something like this to the API instead of needing a
helper. Maybe we could consider the current node APIs more of an SPI and
create  an easy to use client API.

   ...ant

On Wed, Dec 10, 2008 at 1:48 AM, Raymond Feng <en...@gmail.com> wrote:

> Hi,
>
> It might be a good idea to define a set of templates to shield the test
> cases from the environment-specific node configuration and lifecycle. This
> way, the test cases can be simpler and it's possible to run them with
> different environment (JSE or OSGi) by switching the base.
>
> We could define two modules tuscany-test and tuscany-test-equinox to host
> the base test cases. Other itests can add them as test dependencies in
> pom.xml.
>
> The following code is something I tried locally. But I have some issues
> getting the @BeforeClass and @AfterClass version going as JUNIT tries to run
> these methods even before the static initializer of a class is called.
>
> Thanks,
> Raymond
>
> /**
> * Base Node API based test case
> */
> public abstract class NodeTestCase {
>   protected final Logger logger = Logger.getLogger(getClass().getName());
>   protected String compositeResource;
>   protected Node node;
>
>   protected NodeTestCase(String compositeResource) {
>       super();
>       this.compositeResource = compositeResource;
>   }
>
>   @Before
>   public void setUp() throws Exception {
>       try {
>           String location =
> ContributionLocationHelper.getContributionLocation(compositeResource);
>           Contribution contribution = new Contribution(location, location);
>           NodeFactory factory = NodeFactory.newInstance();
>           node = factory.createNode(compositeResource, contribution);
>           node.start();
>       } catch (Exception e) {
>           logger.log(Level.SEVERE, e.getMessage(), e);
>           throw e;
>       }
>   }
>
>   @After
>   public void tearDown() throws Exception {
>       if (node != null) {
>           node.stop();
>       }
>   }
> }
>
> --------------------------------------------------
> From: "Mike Edwards" <mi...@gmail.com>
> Sent: Friday, December 05, 2008 1:06 PM
> To: <de...@tuscany.apache.org>
> Subject: Activities in Trunk  - was:  svn commit: r723136 - in
> /tuscany/java/sca: distribution/core/pom.xml modules/pom.xml
>
> [[SNIP]]
>
>
>> So far, it is mostly a case of tweak, tweak, tweak, adjusting dependencies
>> and OSGi MANIFEST files, but in a few cases, the 2.0 APIs are different from
>> the 1.x APIs and some changes are needed - this often affects testcases more
>> than mainline module code.  One lesson from this is that I think we should
>> consider creating a tests-utils module to contain some of the sequences that
>> tests seem to need commonly - and to hide the testcase code from changes in
>> the base platform.
>>
>>
>> Yours,  Mike.
>>
>
>