Hi Romain,

On 29.10.19 22:40, Romain Manni-Bucau wrote:
Hi Karl

Not sure id do a MavenIT annotation - test is enough probably - but i
like jupiter style.

MavenIT[1] annotation contains more information like global/local cache,
the default goals which are used for the build, debugging or not (just
to mention some; I think there will be more).

Also so the MavenTest annotation is needed to define specific things for
Maven like activeProfiles etc.

[1]:
https://github.com/khmarbaise/maven-it-extension/blob/master/src/main/java/org/apache/maven/jupiter/extension/MavenIT.java

See also:

https://github.com/khmarbaise/maven-it-extension/blob/master/src/test/java/org/apache/maven/jupiter/it/MavenIntegrationIT.java



Im less exited by assertj but it is probably a habit thing.

I'm not sure if I see your issue with AssertJ. Have you used it? AssertJ
brings clear expression and readable tests in general and gives me a
simple way to create custom assertions to support special parts for a
Maven build like Log file, project structure, target directory contents,
content of archive files etc. ?

like this:

 assertThat(result)
   .project()
     .hasTarget()
       .withEarFile()
          .containsOnlyOnce("META-INF/MANIFEST.MF");

I've never seen a assertion framework which makes it possible to write
tests in a more or less fluent way ...

What would be your choice?



Wonder if you evaluated to run in a fake filesystem like jimfs or so and
enable the pom+files to be defined on the test method?

This is exactly where I have decided against at the moment cause
construction of a full maven project with all it's pom file(s)
directories source code etc. is based on the things I want to solve to
complicated...we already have such things[2] also in plexus testcase you
can do such things or more easier today just use mockito ...

Currently I have gone the path to have a convention where to find the
projects which are used to be tested like maven-invoker-plugin already
does ...and can also being executed manually within the directory
without any change ...helps a lot in case error hunting ...

Can you explain the hint about fake filesystem like jimfs a little bit
more cause I don't know jimfs etc. and what you have in mind?


[2]:
https://maven.apache.org/plugin-testing/maven-plugin-testing-harness/index.html

> > Goal would be to
not split setup and asserts (given and then colocalized, then being the
mvn exec).

Maybe I misunderstand that? Can you give an example ?

Kind regards
Karl Heinz Marbaise



Hope it makes sense.



Le mar. 29 oct. 2019 à 21:47, Karl Heinz Marbaise <[email protected]
<mailto:[email protected]>> a écrit :

    Hi to all,

    I've invested some time to get a thing working in a different way which
    nags me for a long time.

    Integration tests for maven plugins and for maven core...

    So created a prototype based on a JUnit Jupiter extension.

    The following is the JUnit Jupiter extension (currently very hacky code;
    not intended to win a competition for good code!)

    https://github.com/khmarbaise/maven-it-extension

    which contains some documentation which is of course not ready yet...
    but the implementation and usage (see maven-ear-plugin) gives me at the
    moment already a very good impression how easy it can be to write
    integration tests for a maven plugin etc.

    Example from the docs(not 100% working like that yet):

    @MavenIT
    class FirstMavenIT {

        @MavenTest
        void the_first_test_case(MavenProjectResult result) {
          assertThat(result)
            .build()
              .isSuccessful()
            .and()
            .project()
              .hasTarget()
                .withEarFile()
                  .containsOnlyOnce("META-INF/MANIFEST.MF")
              .log()
                .info().contains("Writing data to file")
            .cache()
                .withEarFile("G:A:V")
                .withPomFile("G:A:V")
                .withMetadata().contains("xxx");
        }
    }


    I created a branch "maven-it-extension" on Maven EAR Plugin which shows
    that it can be used in combination with maven-invoker-plugin:install
    goal and using maven-failsafe-plugin to run the tests for
    maven-ear-plugin (some of them at the moment. Not migrated all of
    them yet).

    Example which already works:
    
https://github.com/apache/maven-ear-plugin/blob/maven-it-extension/src/test/java/org/apache/maven/plugins/ear/it/EARIT.java


    WDYT ?

    Kind regards
    Karl Heinz Marbaise

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to