Hi,

yes, this is something I have actually started to use as a basic principle. 

In src/main/resources and src/test/resources there is a config file
jdbc.properties which defines the connection details. It has properties such
as 

jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}

Now, instead of trying to make Maven put different values to
${jdbc.username} based on the build phase, I created additional properties
such as ${jdbc.test.username} and used them in the src/test/*. I'm still in
the middle of configuring the whole thing, but it seems like a valid
approach.

To get things clear, maven creates one .war during the test phase (with
files based on src/test/resources/) and then creates another .war (using
files from src/main/resources) when it creates the final installation
packet? When I run

> mvn install

and Maven first goes through the test phase and then installs war in the
repository, two different wars are created? Correct?




Victor Cardona wrote:
> 
> jimpo wrote:
>> Using application server -specified datasources is out of the question
>> right
>> now unfortunately. Database connection details are configured inside the
>> web
>> application.
>> 
>> It surprises me if Maven would not make it easy to use a different
>> database
>> configuration for the tests and a different one for the created
>> application.
>> This would basically make the dbUnit plugin pretty pointless, wouldn't
>> it?
>> If you are creating a release of your application, you want the release
>> to
>> point to a production db, but you still want the unit tests to be done
>> against a unit test db populated with dbUnit.
>> 
>> (not getting into whether such unit tests are really true "unit"
>> tests...I
>> need them regardless of the term)
>> 
>> 
>> Arnaud Bailly wrote:
>>> jimpo <[EMAIL PROTECTED]> writes:
>>>
>>>> I am using Maven2 to build my war packet. Base maven configuration is
>>>> created
>>>> with Appfuse http://appfuse.org/display/APF/Home.
>>>>
>>>> When I do a mvn install (or mvn cargo:deploy), first a test phase
>>>> executes,
>>>> and then the final war is built and installed in the repository (or
>>>> deployed
>>>> to my app server).
>>>>
>>>> I want to run the tests against a different db than which the final
>>>> package
>>>> uses. So far I have not figured out how to do this. Test phase uses the
>>>> same
>>>> database as the final application.
>>>>
>>>> I figured out how to use profiles to switch between different
>>>> databases.
>>>> I
>>>> can switch to test profile with, say, mvn test -Ptestdatabase. I could
>>>> of
>>>> course use mvn test -Ptestdatabase to test and then separate command
>>>> mvn
>>>> install -Dmaven.test.skip -Prealdatabase for creating the packet (and
>>>> skipping tests), but that's not very nice. I want to be able to issue
>>>> one
>>>> command which does both phases, tests and packaging.
>>>>
>>>> I am guessing maybe the solution would be something like activating
>>>> profile
>>>> X for the tests phase, and then activating a different profile Y for
>>>> the
>>>> actual build. How could I accomplish this?
>>>>
>>> Hello,
>>> I do not think possible right now to activate different profiles for
>>> different phases in the same run.  And I do not think this is
>>> desirable. Maybe, if you are in a J2EE Container, you could use
>>> different data sources parameters in test and production ? AFAIK, data
>>> source configuration is independent of the applicaiont and configured
>>> in the container, so you could use a test configuration, say with
>>> hsqldb or derby in test, and another configuration in productoin. In
>>> your webapp, data source reference will stay the same.
>>>
>>> HTH
>>> -- 
>>> OQube < software engineering \ génie logiciel >
>>> Arnaud Bailly, Dr.
>>> \web> http://www.oqube.com
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>> 
> 
> I'm not familiar with Appfuse, so excuse my uninformed question.  How
> are you configuring your datasource in your webapp?  I'm guessing that
> you have the connection properties in a file somewhere similar to
> tomcat's context.xml.  If so, can't you just add a similar file to your
> testing resources directory that would then configure the application
> with the test database information?
> 
> Victor
> 
> 
>  
> 

-- 
View this message in context: 
http://www.nabble.com/How-to-use-different-databases-for-tests-and-the-actual-application--tf4696771s177.html#a13469803
Sent from the Maven - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to