2017-02-14 24 views
1

當使用MojoRule,在會話中localRepository是即使我在路過它在我的測試POMMaven的插件測試,線束session.getLocalRepository()返回null

測試雙龍

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

魔類

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

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

測試代碼

@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); 

    } 

錯誤

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

回答

1

我們需要創建一個localRepository,然後使用請求,將其連接到會話。在這之後,我們創造的魔力和類的localRepository變量包含回購

測試代碼

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) 

    ); 
    } 
相關問題