Thanks João, thanks Robert.

I've taken Robert's snippet and expanded it a little to do what I want:

    Diff:
https://github.com/paul-hammant/todobackend-jooby/commit/9626a3155eddbaea74bbf66a3e899b81227842ee
    (repo: paul-hammant/todobackend-jooby* branch: expectations*)

I found that I had to be explicit about excludes too, and have a precursor
exclude that is outside of the three executions.

I did a bunch of trial and error, but this was the minima.

The test of correctness:

  $ mvn install | grep "Time elapsed"
  Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.237 sec
- in todobackend.TodoUnitTest
  Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.51 sec
- in todobackend.TodoIntegrationTest
  Tests run: 4, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 11.608
sec - in todobackend.TodoWebDriverTest
  (ignore some WebDriver noise to std-err)
I can't say I really understand the rules about additive includes and
excludes, but my job is to make speedy builds, not fully understand every
angle bracket of Maven.

Regards,

- Paul


On Fri, Feb 17, 2017 at 2:00 PM, Robert Scholte <rfscho...@apache.org>
wrote:

> When you only want to change the pom (not the tests), a set of
> executionblocks will do the trick:
>
>       <plugin>
>         <groupId>org.apache.maven.plugins</groupId>
>         <artifactId>maven-surefire-plugin</artifactId>
>         <version>2.18.1</version>
>         <executions>
>           <execution>
>             <id>unit-tests</id>
>             <configuration>
>             <includes>
>               <include>**/*Unit*.java</include>
>             </includes>
>             </configuration>
>           </execution>
>           <execution>
>             <id>functional-tests</id>
>             <configuration>
>             <includes>
>               <include>**/*WebDriver*.java</include>
>             </includes>
>             </configuration>
>           </execution>
>           <execution>
>             <id>integration-tests</id>
>             <configuration>
>             <includes>
>               <include>**/*Integration*.java</include>
>             </includes>
>             </configuration>
>           </execution>
>         <executions>
>       </plugin>
>
>
> On Thu, 16 Feb 2017 11:22:37 +0100, João Cabrita <joao.r.cabr...@gmail.com>
> wrote:
>
> I'd say you could add executions to the surefire plugin with different
>> categories:
>> https://maven.apache.org/surefire/maven-surefire-plugin/
>> examples/junit.html#Using_JUnit_Categories
>>
>> Look at this gist (I've omitted some details):
>> https://gist.github.com/kewne/2b909ab5e8035a4e44e406fa35e3276c
>>
>> AFAIK, even if the executions are all bound to the same phase in the
>> lifecycle, they execute in the order specificied in the POM.
>> Beware this is the behavior I've observed and can't confirm it is
>> specified
>> behavior.
>>
>>
>>
>> João Cabrita
>>
>> On 16 February 2017 at 10:06, Paul Hammant <p...@hammant.org> wrote:
>>
>> Hi folks,.
>>>
>>> I've a fast WebDriver using build that I blogged about: A 16 Second Java
>>> Webapp Build (Including WebDriver Tests)
>>> <http://paulhammant.com/2017/02/05/a-16-second-java-webapp-
>>> build-including-webdriver-tests/>
>>> .
>>>
>>> Jooby (like SpringBoot and SparkJava) give new options for testing - it
>>> can
>>> be instantiated in a JUnit test. Everything can be done in Surefire now,
>>> and the Failsafe plugin isn't needed for these.  Don't believe me - watch
>>> the video in the blog entry above, it's not long.
>>>
>>> New problem. I want unit tests to run in this order:
>>>
>>> 1. unit
>>> 2. integration (may invoke service calls headlessly)
>>> 3. function (will use WebDriver)
>>>
>>>
>>> I can't work out what magic I have to do with executions to allow that to
>>> happen.
>>>
>>> Here is how far I got:
>>>
>>>
>>> https://github.com/paul-hammant/todobackend-jooby/blob/
>>> master/pom.xml#L74
>>>
>>> It is all a bit second class, because I'd have to do ...
>>>
>>> mvn clean test -Punit-tests
>>> mvn test -Pintegration-tests
>>> mvn test -Pfunctional-tests
>>>
>>> ... to simulate a pipeline, and I would be happy to just rely on
>>> annotations for classifications.
>>>
>>> I really want to do ...
>>>
>>> mvn clean test -DexecutionOrder=unit,integration,functional
>>> -DstopBuildAtExecutionBoundariesForTestFailures
>>>
>>>
>>> ... and shave seconds off the build.
>>>
>>> How do I configure that tersely and elegantly in the surefire plugin
>>> today?
>>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> For additional commands, e-mail: users-h...@maven.apache.org
>
>

Reply via email to