使用MojoRule时,会话中的localRepository为null,即使我在测试pom中传入它
测试Pom
<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 Class
/**
* 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)
答案 0 :(得分:2)
我们需要创建一个localRepository,然后使用该请求将其附加到会话中。之后,我们创建mojo,类的localRepository变量包含repo
测试代码
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 )
);
}