Hi Malithi,

We normally recommend to keep all test artefacts under integration module
and build them before all test modules. In this case, if you
copy travelocity sample code to integration module then it will introduce
code duplication. So the best approach would be to modify the war file at
test run time and create four war files with different names. You might be
able to use war as a dependency and use unpack and find-and-replace plugins
to create create combination of test artefacts. Then you can host those war
files on tomcat server before executing any tests.

You can use TestNG @BeforeTest annotation to start tomcat server before any
tests in your test package. We have followed the same approach in ESB JMS
tests where ActiveMQ serve is started before running any tests in the
package [1] (you need to introduce new test block in testng.xml)

Thanks,

Krishantha.

[1]
https://github.com/wso2-dev/product-esb/blob/master/modules/integration/tests-integration/tests-transport/src/test/java/org/wso2/carbon/esb/jms/transport/test/JMSBrokerStartupTestCase.java

On Sun, Oct 26, 2014 at 10:03 PM, Malithi Edirisinghe <[email protected]>
wrote:

> Hi All,
>
> I have used travelocity sample application to automate tests for the Open
> Id, for following parameter combinations.
>
> User - (Admin/Login User/Tenant User)
> User Consent - (Approve/Approve Always/Skip)
> Association Type - (DB Store/Replication Store/Crypto Store)
> OpenId Attribute Exchange - (With/Without)
> Consumer Type - (Smart Mode/Dumb Mode)
>
> Test is being written using @factory annotation along with a TestNG data
> provider to initiate tests for each parameter combination.
>
> In order to specify the consumer type and to specify whether attribute
> exchange is requested or not I introduced two new properties to the sample
> app as below.
>
> #Specify whether the consumer requests user attributes from the provider
> OpenId.EnableAttributeExchange=true
>
> #Specify whether the consumer runs in dumb mode
> OpenId.EnableDumbMode=false
>
> So for these two properties there are four combinations that I have to
> test, and I see below two approaches to get this done.
>
>    1. Build four artifacts of the sample app for each combination of the
>    two properties.
>    2. Use the same artifact for testing changing the property file for
>    each combination.
>
> I have tried on (1) using maven-war-plugin by adding four executions and
> labelling each artifact with a classifer. But this approach packages four
> additional artifacts though we need them only for testing. I'm not sure how
> can we have those artifacts be packaged only at the test phase.
> Further there are several ways of using the tomcat instance with the
> deployed app.
>
>    1. Start tomcat before each test and deploy the relevant artifact.
>    Then stop the instance after the test.
>    2. Start the tomcat instance before executing a test group and deploy
>    all artifacts needed before running tests. Then stop the instance after
>    running all tests in that group.
>
> I found that existing IS tests were written using the first approach. But
> when considering this case considerable amount of tests would be initiated
> for combinations of above parameters. So seems 2nd approach would be better.
>
> I would like to know the best approach to be followed here.
> Kindly expect your thoughts on this.
>
> Thanks,
> Malithi.
>
> --
>
> *Malithi Edirisinghe*
> Senior Software Engineer
> WSO2 Inc.
>
> Mobile : +94 (0) 718176807
> [email protected]
>



-- 
Krishantha Samaraweera
Senior Technical Lead - Test Automation
Mobile: +94 77 7759918
WSO2, Inc.; http://wso2.com/
lean . enterprise . middlewear.
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to