Re: Maven Unit tests with EOF
Re: Maven Unit tests with EOF
- Subject: Re: Maven Unit tests with EOF
- From: Aaron Rosenzweig via Webobjects-dev <email@hidden>
- Date: Thu, 23 Jan 2020 09:53:30 -0500
Hey everybody,
I noticed that “NSBundle.java” is defined in ERFoundation and also
JavaFoundation…
It appears we aren’t using ERXPatcher to replace it and that might not even be
an option… so you have to have ERFoundation loaded first for it to override. I
do have it that way and Maven is doing it that way but I hadn’t noticed before
that NSBundle is already patched.
AARON ROSENZWEIG / Chat 'n Bike <http://www.chatnbike.com/>
e: email@hidden <mailto:email@hidden> t: (301) 956-2319
> On Jan 23, 2020, at 9:39 AM, Aaron Rosenzweig <email@hidden> wrote:
>
> Dennis that is a good point,
>
> At the moment I have not cleaned and the product is there but it’s not
> working but your point is still well taken. In Jenkins, in the cloud, it will
> do a clean and I really should be doing a clean every time so the product
> won’t be there to test with… there won’t be a bundle.
>
> Maven “Failsafe” makes sense for selenium… which is technically a JUnit test
> too but it’s very heavy and flexes the UI of a bundled and launched app.
>
> Cloning a “company” EO and testing unique constraints in SQL - is heavier
> than testing an “isCamelCase()” function but lighter than selenium. Maybe we
> have to do it in failsafe but it feels closer to regular unit tests that
> should fire every time there is a checkin to the repo. In other words if your
> tests take 5 minutes to run, why not let Agnes tell you immediately that the
> build is broken rather than waiting till midnight for selenium to do so?
>
> http://www.globalnerdy.com/wp-content/uploads/2008/08/you_broke_the_build.jpg
> <http://www.globalnerdy.com/wp-content/uploads/2008/08/you_broke_the_build.jpg>
>
> When we run from within Eclipse we have a “bundless build” that uses the
> Fluffy Bunny NSBundle variant and works great… without a product… and the
> destructive EOF unit tests work there. I think what Markus did was patch
> NSBundle to treat the maven target with the intermediate classes and
> resources as a “maven bundless build” or a “maven black-ops bunny”
> if-you-will.
>
> I’m still confused but clarity is setting in. Thank you everyone for this
> hearty discussion.
> AARON ROSENZWEIG / Chat 'n Bike <http://www.chatnbike.com/>
> e: email@hidden <mailto:email@hidden> t: (301) 956-2319
>
>
>
>> On Jan 23, 2020, at 2:54 AM, Dennis Scheffer <email@hidden
>> <mailto:email@hidden>> wrote:
>>
>> Hi everyone,
>>
>>
>>> // That's the main bundle when running tests from Eclipse
>>> Path mainBundlePath = Paths.get("build/your-project.woa");
>>>
>>> if (Files.notExists(mainBundlePath)) {
>>> // Maven doesn't create a build directory. The WOA bundle goes into the
>>> target folder instead.
>>> mainBundlePath = Paths.get("target/your-project.woa");
>>> }
>>>
>>> ERXExtensions.initApp("your-project", mainBundlePath.toUri().toURL(),
>>> ACUnitTestingApplication.class, args);
>>
>> This may not work under certain circumstances because the surefire plugin
>> usually runs in the Maven 'test' phase which is before the 'package' phase.
>> Therefore, there may not be a bundle at 'target/your-project.woa' –
>> especially if you do a 'mvn clean test'.
>>
>> The solution is very simple: I would consider tests that depend on a
>> pre-build bundle integration tests (which makes sense because most of the
>> time all the application's 'units' are integrated in a bundle). And just use
>> the Maven failsafe pugin
>> (https://maven.apache.org/surefire/maven-failsafe-plugin/
>> <https://maven.apache.org/surefire/maven-failsafe-plugin/>). It works
>> exactly the same as the surefire plugin but runs in the 'verify' phase which
>> is after the 'package' phase. So 'mvn clean verify' will clean your target
>> directory, create a fresh new bundle and run your tests on your fresh bundle
>> with the solution mentioned above.
>>
>> With regards,
>> --
>> Dennis
>>
>>
>>> On 23. Jan 2020, at 02:28, Henrique Prange via Webobjects-dev
>>> <email@hidden <mailto:email@hidden>>
>>> wrote:
>>>
>>> Hey Aaron,
>>>
>>> This error rings a bell. I don't recall all the details. It looks like the
>>> collectMainProps method is trying to find the Properties file of your
>>> project in the wrong place.
>>>
>>> When you build your project in Eclipse with WOLips, it generates a build
>>> folder containing your project's WOA bundle. Maven, however, puts the
>>> generated WOA bundle in the target folder. I'm afraid the application
>>> initialization code keeps looking for the build folder when you run your
>>> tests with Maven.
>>>
>>> I'm not sure if there's a better way to solve this problem. Anyway, the
>>> code below may fix it.
>>>
>>> // That's the main bundle when running tests from Eclipse
>>> Path mainBundlePath = Paths.get("build/your-project.woa");
>>>
>>> if (Files.notExists(mainBundlePath)) {
>>> // Maven doesn't create a build directory. The WOA bundle goes into the
>>> target folder instead.
>>> mainBundlePath = Paths.get("target/your-project.woa");
>>> }
>>>
>>> ERXExtensions.initApp("your-project", mainBundlePath.toUri().toURL(),
>>> ACUnitTestingApplication.class, args);
>>>
>>> Cheers,
>>>
>>> HP
>>>
>>>> On Jan 22, 2020, at 2:09 PM, Aaron Rosenzweig via Webobjects-dev
>>>> <email@hidden <mailto:email@hidden>>
>>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I’m trying to run maven unit tests with the surefire plugin that make use
>>>> of EOF but it’s not working out.
>>>>
>>>> I can run them in Eclipse with a direct launch as a bundless build and it
>>>> works. I make a call in the static initializer of the test case to:
>>>> ERXExtensions.initApp(ACUnitTestingApplication.class, arguments);
>>>>
>>>> And it thinks it’s a WO app and has access to the model group and all of
>>>> EOF and I can do destructive stuff like creating and saving Eos to the DB
>>>> all inside a launch from Eclipse.
>>>>
>>>> Where I’m running into trouble is trying to do it with Maven. At the
>>>> moment I’m getting a null pointer from maven launch at the following place.
>>>>
>>>> er.extensions.appserver.ERXApplication$Loader.collectMainProps(ERXApplication.java:757)
>>>>
>>>> I think because it is wanting to treat it as a bundle but it isn’t and so…
>>>> I’m not sure where to go from here. Any advice?
>>>>
>>>> AARON ROSENZWEIG / Chat 'n Bike <http://www.chatnbike.com/>
>>>> e: email@hidden <mailto:email@hidden> t: (301) 956-2319
>>>>
>>>>
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Webobjects-dev mailing list (email@hidden
>>>> <mailto:email@hidden>)
>>>> Help/Unsubscribe/Update your Subscription:
>>>>
>>>> This email sent to email@hidden <mailto:email@hidden>
>>>
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list (email@hidden
>>> <mailto:email@hidden>)
>>> Help/Unsubscribe/Update your Subscription:
>>>
>>>
>>> This email sent to email@hidden <mailto:email@hidden>
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden