首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双倍计数试验

双倍计数试验
EN

Stack Overflow用户
提问于 2018-11-16 22:54:16
回答 1查看 986关注 0票数 2

虽然我对Maven生命周期并不十分熟悉,但在过去的三天里,我阅读了相当多的文档,但没有发现在构建周期、目标或插件与我所看到的问题之间存在任何关系。

我遇到了一个奇怪的问题,在最新的保险火插件(3.0.0-M1),我的单元测试正在成功完成,但似乎运行了两次(或者可能只是被计算了两次?)

一些上下文-在此POM文件中指定任何插件或版本之前,将使用以下默认版本单独运行:

代码语言:javascript
复制
mvn clean package

我不知道为什么。我从来没有停下来问为什么会这样。它一直以来都是,所以我认为这是理所当然的,现在它的行为怪异。这可能是我应得的。

这是该运行的POM文件(删除了一些属性和发行版):

代码语言:javascript
复制
<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作为计数(这是正确的)。这种情况已经持续了一年多了,但是我增加了一些代码调整,现在我需要将它作为一个插件,因为我需要一些环境变量来进行测试,比如:

代码语言:javascript
复制
<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中的插件作为行项保存,但将其设置为“默认”版本:

代码语言:javascript
复制
<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课程:

代码语言:javascript
复制
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 { }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-17 20:38:11

请参阅此answer to 的参考部分,了解为什么插件在构建时没有声明就运行。

一个关于加倍测试的猜测:在您的第一个映像中,我们可以看到您正在运行一个TestSuite。也许您的测试是通过这个套件运行(或计数)一次,并单独运行一次。如果你移除/禁用套件呢。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53346442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档