java - 如何构建运行测试套件的 Maven 工件? 'sbt test' 是如何工作的?

标签 java scala unit-testing testing integration-testing

我是 scala 开发人员,所以我会尝试用 sbt 示例来解释我的想法,但我相信 java 开发人员可以理解我

传统的scala/java项目结构如下:

src ->
 - main
 - test
 - it

test 文件夹在概念上用于单元测试(用于测试应用程序逻辑)。所以你可以运行'sbt test'并测试你的应用程序。此代码必须接近您的应用程序。

可能是题外话,这是我的问题:

是否可以构建运行我所有测试的 jar 工件?我不想为了运行我的测试而启动 sbt。我想用集成测试套件构建许多 jar 工件

java my-super-service-it-case1.jar

如果测试通过,这将给我退出代码 0

java my-super-service-it-case2.jar 

等等...

我相信我需要在主 block 中运行测试..

最佳答案

我不建议在程序的主要功能中混合任何测试,有一个非常好的插件可以满足您的需求,Maven Surefire Plugin它应该可以与 Scala 一起正常工作,但我自己从来没有搞砸过 Scala。

在这里写出您需要的内容会太多,但文档和大量示例中对此进行了很好的介绍。您可以指定包含和排除的不同目标,这样您就可以执行单元测试或验收测试,例如:

mvn verify -P acceptance-tests -Dbuild.env=sit

POM.XML 文件中配置了以下配置文件

<profile>
  <id>acceptance-tests</id>
  <activation>
    <property>
      <name>env.BUILD_STAGE</name>
      <value>ACCEPTANCE</value>
    </property>
  </activation>
  <build>
    <plugins>
      <!-- skip unit tests -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>

      <!-- run acceptance tests (during integration-test phase) -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <includes>
            <include>**/*AT*.*</include>
          </includes>
          <excludes>
            <exclude>**/*Test.*</exclude>
            <exclude>**/*IT.*</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

我所有的验收测试都以 AT 命名,比如 myTestAT.java

关于java - 如何构建运行测试套件的 Maven 工件? 'sbt test' 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204115/

相关文章:

node.js - require.main.require 有效,但不在 Mocha 测试中

java - 我可以在使用 JUnit 测试的公共(public)方法中完全省略私有(private)方法吗?

java - 使用uibinder的Gwt图像按钮

scala - ProcessLogger,仅收集错误

scala - 不变性设计(在 Scala 中)

用多个结束分隔符分割字符串

javascript - 针对已编译的包运行测试

java - 如何使 JFrame 中出现新图像?

Java lambda LinkedBlockingQueue 意外行为

java - 使用 Java API 连接到 Smartsheet 时出错