2017-02-14 2 views
1

Wenn MojoRule verwenden, die localRepository in der Sitzung null ist, obwohl ich es in meinem Test in pomMaven-Plugin-Test-Gurtzeug session.getLocalRepository() gibt null

Test-Pom

bin vorbei
<build> 
    <plugins> 
     <plugin> 
      <groupId>myplugin</groupId> 
      <artifactId>isolatedFeatureBranch</artifactId> 
      <goals> 
       <goal>SetRepositoryProperties</goal> 
      </goals> 
      <configuration> 
       <localRepository>${localRepository}</localRepository> 
       <branchName>feature/defaultInPomFile</branchName> 
      </configuration> 
     </plugin> 

Mojo Klasse

/** 
* Maven Project Access 
*/ 
@Component 
protected MavenProject project; 

/** 
* Local Repository. 
*/ 
@Parameter(defaultValue = "${localRepository}", readonly = true, required = true) 
private ArtifactRepository localRepository; 

Testcode

@Rule public TestName name = new TestName(); 
    @Rule public MojoRule mojoRule = new MojoRule(); 
    @Rule public TestResources testResources = new TestResources(testProjects.getAbsolutePath(), workDir.getAbsolutePath()); 

    private MavenProject project; 
    private MavenSession session; 
    private SetRepositoryPropertiesMojo mojo; 
    @Before 
    public void setUp() throws Exception { 
    // setup with pom set BRANCHNAME set in pom 
    File pomDir = testResources.getBasedir("SetPropertiesTestsDefaultInPom"); 
    project = mojoRule.readMavenProject(pomDir); 

    session = mojoRule.newMavenSession(project); 

    // Generate Execution and Mojo for testing 
    MojoExecution execution = mojoRule.newMojoExecution("SetRepositoryProperties"); 
    mojo = (SetRepositoryPropertiesMojo) mojoRule.lookupConfiguredMojo(session, execution); 

    } 

Fehler

java.lang.NullPointerException 
at SetPropertiesFeatureBranchTests.setRemoteRepositoryHappyPath(SetPropertiesFeatureBranchTests.java:98) 

Antwort

1

Wir brauchen eine localRepository erstellen und dann die Anforderung an die Sitzung befestigen verwenden. Danach schaffen wir die mojo und die localRepository Variable Klasse enthält die Repo

Testcode

public void setUp() throws Exception { 
    // setup with pom set BRANCHNAME set in pom 
    File pomDir = testResources.getBasedir("SetPropertiesTestsDefaultInPom"); 
    project = mojoRule.readMavenProject(pomDir); 

    // Generate session 
    session = mojoRule.newMavenSession(project); 

    // add localRepo - framework doesn't do this on its own 
    ArtifactRepository localRepo = createLocalArtifactRepository(); 
    session.getRequest().setLocalRepository(localRepo); 

    // Generate Execution and Mojo for testing 
    MojoExecution execution = mojoRule.newMojoExecution("SetRepositoryProperties"); 
    mojo = (SetRepositoryPropertiesMojo) mojoRule.lookupConfiguredMojo(session, execution); 

    } 

/** 
    * Generate a local repository 
    * @return local repository object 
    */ 
    private ArtifactRepository createLocalArtifactRepository() { 
    return new MavenArtifactRepository("local", 
     localRepoDir.toURI().toString(), 
     new DefaultRepositoryLayout(), 
     new ArtifactRepositoryPolicy(true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE), 
     new ArtifactRepositoryPolicy(true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE) 

    ); 
    }