并非所有jUnit测试用例都在使用PowerMock和easymock、Surefire为Maven项目运行

并非所有jUnit测试用例都在使用PowerMock和easymock、Surefire为Maven项目运行,maven,junit,easymock,powermock,surefire,Maven,Junit,Easymock,Powermock,Surefire,在Maven项目中,我使用PowerMock easymock运行jUnit测试用例。但是,在执行“mvn清洁安装”时,我的输出低于 T T S T S 运行测试套件 测试运行:2,失败:0,错误:0,跳过:0,所用时间:0.621秒 结果: 测试运行:2,失败:0,错误:0,跳过:0 但是我有很多其他的测试用例。 下面是pom.xml的一部分 <dependency> <groupId>junit</groupId> &l

在Maven项目中,我使用PowerMock easymock运行jUnit测试用例。但是,在执行“mvn清洁安装”时,我的输出低于


T T S T S 运行测试套件 测试运行:2,失败:0,错误:0,跳过:0,所用时间:0.621秒

结果:

测试运行:2,失败:0,错误:0,跳过:0


但是我有很多其他的测试用例。 下面是pom.xml的一部分

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>org.easymock</groupId>
        <artifactId>easymock</artifactId>
        <version>3.1</version>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-easymock-release-full</artifactId>
        <version>1.4.12</version>
        <type>pom</type>
</dependency>

朱尼特
朱尼特
4.8.2
测试
org.easymock
轻松的
3.1
测试
org.powermock
powermock easymock发布已满
1.4.12
聚甲醛

如果我删除PowerMock依赖项并执行“mvn清洁安装”,所有测试用例都可以正常运行。但我必须使用PowerMock。如何解决这个问题?

我猜您的一些测试用例没有运行,您尝试过这个吗

  • 使用mvn surefire插件,并在其中包含测试用例

  • 确保powermock-module-junit4的依赖性

    查看以下链接:code.google.com/p/powermock/wiki/EasyMock\u maven

  • 据迪帕克说

    解决方案1: 在pom.xml中添加以下代码

    <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.13</version>
           <dependencies>
                <dependency>
                     <groupId>org.apache.maven.surefire</groupId>
                     <artifactId>surefire-junit47</artifactId>
                     <version>2.13</version>
                </dependency>
           </dependencies>
    </plugin>
    
    <properties>
        <powermock.version>1.5</powermock.version>
    </properties>
        <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>
    
    
    org.apache.maven.plugins
    如果您使用的是jUnit

    然后执行“mvn清洁安装”

    解决方案2: 在pom.xml中添加以下代码

    <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.13</version>
           <dependencies>
                <dependency>
                     <groupId>org.apache.maven.surefire</groupId>
                     <artifactId>surefire-junit47</artifactId>
                     <version>2.13</version>
                </dependency>
           </dependencies>
    </plugin>
    
    <properties>
        <powermock.version>1.5</powermock.version>
    </properties>
        <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>
    
    
    1.5
    org.powermock
    详情


    所有学分都归迪帕克

    我也有同样的问题,我花了一段时间才弄清楚。我的安装程序引入了一个旧版本的jboss.javassist,奇怪的是,它完全阻止了PowerMockRunner的工作

    值得注意的是,我还有一个混合的JUnit/TestNG环境。我以前尝试过添加多个surefire提供者的解决方案,但也没有成功(使用surefire 2.14.1)。升级到surefire 2.17后,我的JUnit和TestNG测试都开始运行,而无需声明任何surefire提供程序。事实上,JUnit提供程序为我抛出了一个错误,因为我正在使用组。显然,TestNG提供程序允许自由格式的文本(例如“集成”),而JUnit提供程序需要类路径(例如“com.example.UnitTests”)

    这是我的插件部分

            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.17</version>
                <configuration>
                    <groups>spring, unit, integration</groups>
                    <systemPropertyVariables>
                        <java.awt.headless>true</java.awt.headless>
                        <org.apache.activemq.default.directory.prefix>target/test/</org.apache.activemq.default.directory.prefix>
                        <log4j.configuration>file:${project.basedir}/src/test/resources/log4j.properties</log4j.configuration>
                    </systemPropertyVariables>
                    <argLine>${surefire.args}</argLine>
                </configuration>
            </plugin>
    
    
    maven surefire插件
    2.17
    弹簧、单元、集成
    真的
    目标/测试/
    文件:${project.basedir}/src/test/resources/log4j.properties
    ${surefire.args}
    
    。。。以及相关的测试部门

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.9.5</version>
            <scope>test</scope>
        </dependency>
        <!--
        PowerMock versions are compatible with specific Mockito versions.
        https://code.google.com/p/powermock/wiki/MockitoUsage13
         -->
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>1.5.4</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito</artifactId>
            <version>1.5.4</version>
            <scope>test</scope>
        </dependency>
        <!-- without this PowerMock tests don't run in maven -->
        <dependency>
            <groupId>jboss</groupId>
            <artifactId>javassist</artifactId>
            <version>3.8.0.GA</version>
            <scope>test</scope>
        </dependency>
    
    
    org.mockito
    莫基托所有
    1.9.5
    测试
    org.powermock
    powermock-module-junit4
    1.5.4
    测试
    org.powermock
    powermock api mockito
    1.5.4
    测试
    jboss
    javassist
    3.8.0.GA
    测试
    
    我最近遇到过这样一种情况,PowerMock测试被运行,但没有包含在surefire覆盖率报告中。我们发现问题与仪器有关

    我将注意到,我们的大多数测试都使用TestNG运行。通常,我们只在需要利用PowerMock时使用JUnit

    以下是POM代码片段:

    
    

    警告:使用JaCoCo进行代码覆盖率分析的首选方法是 实时仪器。脱机检测有几个方面 缺点,只有在明确特定场景时才应使用 需要此模式。请查阅有关脱机的文档 在使用此模式之前,请先进行检测


    那么,您是否尝试通过将所有测试用例文件放在mvn sure fire插件中来运行它,并具有PowerMock依赖性。我认为您错过了一些依赖性,对于PowerMock-module-junit4,请查看以下链接:干得好,伙计。你的两个解决方案都有效:):)现在我在想哪一个更好的解决方案:D谢谢,洛蒂更喜欢powermock-module-junit4的依赖性,这会更自然。。无论如何,这取决于你。。。哥们儿。