2016-01-04 1 views
5

私はMavenプラグインとMavenのプラグインモジョ設定デフォルトパラメータが

public abstract class AbstractSetupMojo extends AbstractMojo { 
    @Parameter(property="targetHost", defaultValue="localhost") 
    private String targetHost; 
    @Parameter(property="targetPort", defaultValue="27017") 
    private Integer targetPort; 
    @Parameter(property="targetDbName", required=true) 
    private String targetDbName; 
    @Parameter(property="sourceHost", defaultValue="${mojo.configuration.targetHost}") 
    private String sourceHost; 
    @Parameter(property="sourcePort", defaultValue="${mojo.configuration.targetPort}") 
    private Integer sourcePort; 
    @Parameter (property="sourceDbName", defaultValue="${mojo.configuration.targetDbName}") 
    private String sourceDbName; 
    @Parameter(property="scriptsPath") 
    private File scriptsPath; 
}  

その他のMojosはこの1つを拡張するにやや近い見えるシンプルなモジョを持っている値。したがって、考えられるのはsource*のパラメータを対応するtarget*パラメータの値に設定することです。また、いくつかのデフォルト値が設定されています。私は場合、すべてのモジョパラメータがNULLであるため、テストが失敗したテストではPOMファイルへの関心の一部は

 <plugin> 
      <groupId>com.ffy</groupId> 
      <artifactId>setup-maven-plugin</artifactId> 
    <!--     
      <configuration> 
       <scriptsPath>src/test/resources/temp</scriptsPath> 
      </configuration> 
    -->     
      <executions> 
       <execution> 
        <id>generate</id> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

のように見えます

public class GenerateMojoTest extends AbstractMojoTestCase { 

    protected void setUp() throws Exception { 
     super.setUp(); 
    } 

    public void testConfiguration() throws Exception { 
     File pom = getTestFile("src/test/resources/test-project-1/pom.xml"); 
     assertNotNull(pom); 
     assertTrue(pom.exists()); 
     GenerateMojo generateMojo = (GenerateMojo)lookupMojo("generate", pom); 
     assertThat(generateMojo.getSourceDbName()).isEqualTo(generateMojo.getTargetDbName()); 
     assertThat(generateMojo.getSourcePort()).isEqualTo(generateMojo.getTargetPort()).isEqualTo(27017); 
     assertThat(generateMojo.getSourceHost()).isEqualTo(generateMojo.getTargetHost()).isEqualTo("localhost"); 
    } 

} 

のようなものを持っている試験で

<configuration>をコメントアウトしておくと、コメントを外すとscriptsPathだけが設定されます。その他のパラメータはnullです。

は、私は完全に構成モジョを持っているために、私のテストで何かを行う必要がありますか?

私は

protected GenerateMojo setupMojo(final File pom) throws ComponentConfigurationException, Exception { 
    final MavenExecutionRequest executionRequest = new DefaultMavenExecutionRequest(); 
    final ProjectBuildingRequest buildingRequest = executionRequest.getProjectBuildingRequest(); 
    final ProjectBuilder projectBuilder = this.lookup(ProjectBuilder.class); 
    final MavenProject project = projectBuilder.build(pom, buildingRequest).getProject(); 
    final MavenSession session = newMavenSession(project); 
    final MojoExecution execution = newMojoExecution("generate"); 
    final GenerateMojo mojo = (GenerateMojo) this.lookupConfiguredMojo(session, execution); 
    return mojo; 
} 

の代わりlookupMojoと長いアプローチを試してみましたが、それは少し変化しませんでした。

答えて

5

あなたはそれが少し賢くなることを期待する。<configuration/>一部を持っていて、興味を持っている値を定義する必要がありますが、実際にテストハーネスがあるん何か、それは<configuration/>から値を読み取り、注釈のものを無視します。テストハーネスは、必要なものがたくさん残っていますが、適切なMavenの実行/補間のような値を実際にロードするわけではありません。したがって、あなたのニーズに合っていれば、maven-invoker-pluginを使用することをお勧めします。

+2

のmaven-pluginのテスト-harness'は長い道のりを持っている 'ように見えます。 – EvgeniySharapov

+0

ああ、それはそうですが、Maven 2.xが出て以来、これがそうだったことを私に教えてください。答えが設定されているようだmojoRule.lookupConfiguredMojoを()を使用して示唆 - – carlspring

+1

http://stackoverflow.com/questions/31528763/how-to-populate-parameter-defaultvalue-in-maven-abstractmojotestcase/36064396の関連答えがありますパラメータのデフォルト値。 – wemu

関連する問題