代码之家  ›  专栏  ›  技术社区  ›  mes5k

如何测试我刚刚创建的maven原型?

  •  16
  • mes5k  · 技术社区  · 15 年前

    我想要的是原型构建的一个阶段,它接受刚刚创建的原型,运行 mvn archetype:generate 在上面,然后跑 mvn verify 在生成的代码上验证生成的代码是否实际正常。如果需要的话,我会写我自己的MOJO来做这件事,但是想看看解决方案是否已经存在。我看到了 archetype:integration-test 目标,但不是 似乎 做我想做的事。

    6 回复  |  直到 10 年前
        1
  •  14
  •   Stephan Prantl Partly Cloudy    7 年前

    2013年最新消息:这比其他答案建议的要容易得多。

    https://issues.apache.org/jira/browse/ARCHETYPE-334

    用这个词 install 在里面 goal.txt 上面提到的文件,以及来自您正在原型化的项目的测试将作为正常生成的一部分被调用。(和/或 verify

    然而,如果你是新手,让原型意识到 this popular mini-guide 已经过时了,虽然它可以用来做一个原型 不 运行原型集成测试的工作。你应该创建一个 archetype-metadata.xml here . (这也比使用文件集要好得多!)

    还要注意,这些集成测试不响应 -DskipTests

    <build>
      <plugins>
    
        <plugin>
          <artifactId>maven-archetype-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <skip>${skipTests}</skip>
          </configuration>        
        </plugin>
    
      </plugins>
    </build>
    

    (尽管如此 看 integration-test 使用上面的代码执行目标。)

        2
  •  3
  •   Daniel Bremer-Tonn    15 年前

    除了使用maven调用器插件的方法之外,我们还使用了另一种方法。在Maven验证器的帮助下,您可以轻松地测试Maven插件和原型。 只需将以下依赖项添加到maven测试项目的pom中:

    <dependency>                                
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-verifier</artifactId>   
      <version>1.2</version>                    
    </dependency>                               
    

    现在你可以使用

    org.apache.maven.it.Verifier
    

    要获得完整的示例,请查看javascript原型的integration test maven模块: https://github.com/akquinet/javascript-archetypes

        3
  •  2
  •   vorburger    11 年前

    我自己对此也有点纠结,我发现当使用maven原型插件的当前v2.3版本时,除了src/test/resources/projects/first/goal.txt之外,还需要一个src/test/resources/projects/first/archetype.properties,其中包含如下内容:

    sourceEncoding=UTF-8
    groupId=integrationtest.group
    artifactId=integrationtest.artifactId
    version=1.0.0-SNAPSHOT
    package=org.eclipse.xtend.xtend-archetype.integrationtest
    packageInPathFormat=org/eclipse/xtend/xtend-archetype/integrationtest
    

    This pull request 说明了一个完整的工作示例。

        4
  •  0
  •   Sean Patrick Floyd    15 年前

    hudson .

    1. 清空目录(shell脚本)
    2. 基于原型创建新项目(mvn原型:generate)
    3. 运行项目(mvn包)

    而这个 可能是某种程度上适合于一个maven生命周期,它会感觉像一个可怕的混乱。改用CI。

        5
  •  0
  •   Pascal Thivent    15 年前

    我看到了原型:集成测试目标,但它似乎没有做我想做的事情。

    什么 你想要,那个 archetype:integration-test 目标似乎是一个很好的解决方案:

    执行原型集成 测试,包括 当前原型的项目 具有定义的属性和可选的 与参考副本进行比较。信息技术 包含目录 src/测试/资源/项目 包含:

    • 作为与生成的 项目:见原型-334),
    • 可选的引用/目录,其中包含 期望从中创建项目。

    根据上述描述,此目标允许精确地运行集成测试,以根据预期结果检查使用当前原型生成的项目,这看起来像是测试原型的干净、简单、自包含的方法。

    为什么这种方法不令人满意?我错过了什么?

    推荐文章