虽然我对Maven生命周期并不十分熟悉,但在过去的三天里,我阅读了相当多的文档,但没有发现在构建周期、目标或插件与我所看到的问题之间存在任何关系。
我遇到了一个奇怪的问题,在最新的保险火插件(3.0.0-M1),我的单元测试正在成功完成,但似乎运行了两次(或者可能只是被计算了两次?)
一些上下文-在此POM文件中指定任何插件或版本之前,将使用以下默认版本单独运行:
mvn clean package我不知道为什么。我从来没有停下来问为什么会这样。它一直以来都是,所以我认为这是理所当然的,现在它的行为怪异。这可能是我应得的。

这是该运行的POM文件(删除了一些属性和发行版):
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.8</version>
<configuration>
<destFile>${basedir}/target/jacoco.exec</destFile>
<dataFile>${basedir}/target/jacoco.exec</dataFile>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.capitalone.cardcore.App</mainClass>
</transformer>
</transformers>
<artifactSet>
<excludes>
<artifact>junit:*</artifact>
<artifact>org.hamcrest:*</artifact>
<artifact>org.junit.jupiter:*</artifact>
<artifact>org.apiguardian:*</artifact>
<artifact>org.powermock:*</artifact>
<artifact>org.mockito:*</artifact>
<artifact>commons-beanutils:*</artifact>
<artifact>javax.xml.*</artifact>
<artifact>org.apache.hadoop:hadoop-yarn-client:*</artifact>
<artifact>org.apache.hadoop:hadoop-yarn-server-common:*</artifact>
<artifact>org.apache.hadoop:hadoop-yarn-api:*</artifact>
</excludes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>**/*.dll</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<!-- HTTP -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client</artifactId>
<version>1.23.0</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson2</artifactId>
<version>1.23.0</version>
</dependency>
<!-- JRECORD -->
<dependency>
<groupId>net.sf.JRecord</groupId>
<artifactId>JRecord</artifactId>
<version>0.81.1</version>
</dependency>
<dependency>
<groupId>net.sf.bruce_a_martin.cb2xml</groupId>
<artifactId>cb2xml</artifactId>
<version>0.95.3</version>
</dependency>
<!-- PGP -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpg-jdk15on</artifactId>
<version>1.47</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.47</version>
</dependency>
<!-- UNIT TESTS -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.0.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-core</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-easymock</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>2.0.2-beta</version>
<scope>test</scope>
</dependency>
<!-- PARQUET OUTPUT -->
<dependency>
<groupId>org.apache.parquet</groupId>
<artifactId>parquet-avro</artifactId>
<version>${parquet.version}</version>
</dependency>
<dependency>
<groupId>org.apache.parquet</groupId>
<artifactId>parquet-common</artifactId>
<version>${parquet.version}</version>
</dependency>
<dependency>
<groupId>org.apache.parquet</groupId>
<artifactId>parquet-encoding</artifactId>
<version>${parquet.version}</version>
</dependency>
<dependency>
<groupId>org.apache.parquet</groupId>
<artifactId>parquet-column</artifactId>
<version>${parquet.version}</version>
</dependency>
<dependency>
<groupId>org.apache.parquet</groupId>
<artifactId>parquet-hadoop</artifactId>
<version>${parquet.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
</dependencies>所以-没有提到万无一失的插件,但它还是运行了我的测试。运行所有测试,并返回144作为计数(这是正确的)。这种情况已经持续了一年多了,但是我增加了一些代码调整,现在我需要将它作为一个插件,因为我需要一些环境变量来进行测试,比如:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<environmentVariables>
<env>dev</env>
<ENV>DEV</ENV>
</environmentVariables>
</configuration>
</plugin>但现在我在运行测试套件时得到了这样的信息:

第一个问题是:我是不是疯了?当我不包括插件时,当我什么都不做(我甚至不知道如何关闭它)时,默认情况下,该插件正在运行(我甚至不知道如何关闭它),而且当我包含它时,它似乎运行了两次。我的其他插件是否在没有广播的情况下运行?这是我不为之骄傲的问题。但是-如果我将POM中的插件作为行项保存,但将其设置为“默认”版本:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<environmentVariables>
<env>dev</env>
<ENV>DEV</ENV>
</environmentVariables>
</configuration>
</plugin>我得到我期望的144计数,我的测试运行,因为他们有他们需要的变量。那么,最新版的“保险”是否有问题呢?还是我把它和其他包裹放在一起的方式?
有人遇到过这个新的保险公司吗?或者是这种插件的组合?
编辑#1-11/18/2018
包括我的TestSuite课程:
package com.business.cardcore.tests;
import com.business.cardcore.tests.classes.app.*;
import com.business.cardcore.tests.classes.librarytools.*;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
// run the test classes
@Suite.SuiteClasses({
// App
AppCoreTests.class,
AppFileMapperErrorTests.class,
AppFileProcessorErrorTests.class,
AppSchemaWriterErrorTests.class,
// LibraryTools
ChamberOfSecretsTests.class,
ConfigurationTests.class,
CopybookReaderErrorTests.class,
CopybookReaderTests.class,
DatawiseTests.class,
FileMapperTests.class,
HttpWrapperTests.class,
OutputAsciiTests.class,
OutputEbcdicTests.class,
OutputParquetTests.class,
PGPDecryptTests.class,
SchemaWriterTests.class,
TokenValidationTests.class,
TuringTests.class,
ValidationTests.class
})
public class TestSuite { }发布于 2018-11-17 20:38:11
请参阅此answer to 的参考部分,了解为什么插件在构建时没有声明就运行。
一个关于加倍测试的猜测:在您的第一个映像中,我们可以看到您正在运行一个TestSuite。也许您的测试是通过这个套件运行(或计数)一次,并单独运行一次。如果你移除/禁用套件呢。
https://stackoverflow.com/questions/53346442
复制相似问题