Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

jira

...

issue

...

http://jira.codehaus.org/browse/MNG-32

...

Image Added

current location of harness

mojo/mojo-sandbox/maven-plugin-testing/maven-plugin-testing-harness

...

what it is and isn't

...

The

...

harness

...

provides

...

an

...

abstract

...

base

...

class

...

for

...

testing

...

plugins

...

and

...

an

...

increasing

...

collection

...

of

...

stub

...

implementations

...

of

...

key

...

maven

...

classes.

...

Many

...

of

...

your

...

plugins

...

contain

...

plexus

...

components

...

which

...

should

...

be

...

populated

...

by

...

the

...

container

...

so

...

in

...

your

...

test

...

cases

...

you

...

will

...

be

...

'looking

...

up'

...

a

...

mojo

...

and

...

then

...

either

...

using

...

getters

...

and

...

setters

...

on

...

it

...

to

...

setup

...

the

...

mojo

...

or

...

make

...

use

...

of

...

the

...

PlexusConfiguration

...

step

...

that

...

lets

...

an

...

xml

...

snippet

...

on

...

disk

...

configuration

...

everything

...

for

...

you.

...

This

...

plugin

...

harness

...

is

...

not

...

the

...

be

...

all

...

end

...

all

...

solution

...

to

...

mojo

...

testing.

...

It

...

does

...

not

...

do

...

integration

...

testing

...

and

...

the

...

primary

...

scope

...

of

...

the

...

harness

...

is

...

to

...

provide

...

a

...

way

...

for

...

plugin

...

authors

...

to

...

create

...

a

...

fully

...

populated

...

instance

...

of

...

their

...

mojo

...

only

...

with

...

stubs

...

in

...

the

...

place

...

of

...

critical

...

maven

...

classes.

...

This

...

is

...

an

...

attempt

...

to

...

all

...

for

...

some

...

level

...

of

...

mojo

...

testing

...

without

...

needing

...

a

...

full

...

fledged

...

maven

...

execution

...

environment.

how to basically use it
Code Block



h5. how to basically use it

{code}
import org.codehaus.plexus.util.FileUtils;
import org.apache.maven.plugins.testing.AbstractMojoTestCase;

import java.io.File;

public class CompilerMojoTest
    extends AbstractMojoTestCase
{
    protected void setUp() throws Exception {

        // required for mojo lookups to work
        super.setUp();

    }

    /**
     * tests the proper discovery and configuration of the mojo
     *
     * @throws Exception
     */
    public void testCompilerTestEnvironment() throws Exception {

        File testPom = new File( getBasedir(), "target/test-classes/unit/compiler-basic-test/plugin-config.xml" );

        CompilerMojo mojo = (CompilerMojo) lookupMojo ("compile", testPom );

        assertNotNull( mojo );
    }
}
{code}


The first step is to make a test case in 

The first step is to make a test case in src/test/java

...

and

...

extend

...

the

...

AbstractMojoTestCase

...

class.

...

You

...

must

...

make

...

sure

...

that

...

your

...

setUp()

...

method

...

called

...

the

...

super.setUp()

...

otherwise

...

looking

...

up

...

your

...

components

...

will

...

fail.

...

Then

...

to

...

get

...

your

...

mojo

...

it

...

is

...

a

...

simple

...

matter

...

of

...

looking

...

up

...

the

...

mojo

...

and

...

passing

...

in

...

the

...

configuration

...

plugin

...

pom.

Code Block
xml
xml


{code:xml}
<project>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <compileSourceRoots>
            <compileSourceRoot>${basedir}\target\test-classes\unit\compiler-basic-test\src\main\java</compileSourceRoot>
          </compileSourceRoots>
          <compilerId>javac</compilerId>
          <debug>true</debug>
          <outputDirectory>${basedir}\target\test\unit\compiler-basic-test\target\classes</outputDirectory>
          <buildDirectory>${basedir}\target\test\unit\compiler-basic-test\target</buildDirectory>
          <projectArtifact implementation="org.apache.maven.plugins.testing.stubs.StubArtifact"/>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
{code}

This

...

a

...

sample

...

plugin

...

configuration

...

file.

...

If

...

custom

...

expressions

...

are

...

needed

...

then

...

we

...

can

...

add

...

them

...

to

...

the

...

StubResolverExpressionEvaluator

...

class

...

in

...

the

...

plugin

...

harness

...

so

...

things

...

like

...

the

No Format
 ${basedir} 

above

...

are

...

taken

...

care

...

of.

...

Notice

...

the

...

projectArtifact

...

element

...

above

...

with

...

the

...

implementation=""

...

attribute.

...

This

...

is

...

how

...

you

...

will

...

inject

...

the

...

StubArtifact

...

implementation

...

into

...

that

...

projectArtifact

...

private

...

variable

...

on

...

the

...

mojo.

...

Additional

...

elements

...

can

...

be

...

inserted

...

as

...

child

...

elements

...

and

...

they

...

will

...

in

...

turn

...

be

...

assigned

...

to

...

the

...

variables

...

inside

...

that

...

object.

...

An

...

example

...

would

...

be

...

setting

...

the

...

groupId

...

variable

...

on

...

the

...

StubMavenProject.

...

Note:

...

these

...

internal

...

variable

...

might

...

also

...

need

...

implementation=""

...

attributes.

...