我不能跑Powermock通过家.我是PowerMock Mockito和PowerMockRunner驱动jUnit测试。

这里的试验:

@RunWith(PowerMockRunner.class)
@PrepareForTest( { UserLocalServiceUtil.class, ExpandoBridge.class })
public class AlertNotificationsTest {
//...

我还没有配置点儿特别的运行测试。我pom引用以下deps:

  • org.mockito|mockito-所有|1.8.0
  • junit|junit|4.6.0
  • org.powermock.模块|powermock模块-化成junit4|1.3.1
  • org.powermock.api|powermock-api-mockito|1.3.1

当我运行 mvn -Dtest=AlertNotificationsTest test 会为了寻求简便说有没有试运行。但是,如果我运行相同的试验类食,一切都确定。

我做错了什么?


这里是我的pom.xml 下面(有关部分)

    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>5.9</version>
        <classifier>jdk15</classifier>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.6</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.8.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock.modules</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.3.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock.api</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.3.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

这里是从输家

ant war-Dtest=AlertNotificationsTest测试

...
[INFO] Surefire report directory: C:\Devel\Java\EP_PORTAL\information-provider\target\surefi

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.313 sec

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] No tests were executed!  (Set -DfailIfNoTests=false to ignore this error.)
[INFO] ------------------------------------------------------------------------

注意到:我可以运行的其他测试,我只是不能运行这个测试。如果我做的 AlertNotificationsTest 类的延长 junit.framework.TestCase 这类会拿起家,但它似乎不会动 PowerMockRunner.

这里的输出是:


Running TestSuite
[ERROR]: No test suite found.  Nothing to run
Tests run: 4, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 1.053 sec <<< FAILURE!

Results :

Failed tests:
  testSingleEventNotification(pt.estradasportugal.traffic.services.events.AlertNotificationsTest)
  testTwoEventNotification(pt.estradasportugal.traffic.services.events.AlertNotificationsTest)

Tests run: 4, Failures: 2, Errors: 0, Skipped: 0

再次,这些试验运行得很好与日食。


更新 我找到一个可能的问题和解决方法。我已经测试TestNG和JUnit.如果我删除TestNG从我的球和迁移的我所有的测试,以JUnit,我能够跑我PowerMock测试 mvn test.如此看来,有一个问题与专家和junit/testng组合。

我想要能够运行,但如果我不找到一个方法我会去回答我自己的问题。谢谢你们&gal

有帮助吗?

解决方案 7

有一个问题,当混合的两TestNG&JUnit测试。迁移所有的测试,以Junit解决我的问题。谢谢你们.

其他提示

我只是有这个错误,并努力通过解决方案。我pom.xml 文件具有下列属性:

<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-mockito-release-full</artifactId>
  <version>1.5</version>
  <classifier>full</classifier>
  <scope>test</scope>
</dependency>

问题来自这样的事实我的代码使用JUnit和上依赖外部的依赖TestNG.这是阻止我的测试运行。为什么我不知道-你会有的,虽然一个测试框架已经过测试更好一点!!!

无论如何解决的办法是打破'完全'的依赖关系只是那些要求:

<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-api-mockito</artifactId>
  <version>1.5</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-core</artifactId>
  <version>1.5</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-module-junit4</artifactId>
  <version>1.5</version>
  <scope>test</scope>
</dependency>

这解决了它。顺便说一句我用 mvn dependency:tree 要了解相关的依赖关系。

我不能再现你的问题。与以下内容在我pom.xml:

  <repositories>
    <repository>
      <id>powermock-repo</id>
      <url>http://powermock.googlecode.com/svn/repo/</url>
    </repository>
  </repositories>
  <properties>
    <powermock.version>1.3.1</powermock.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.powermock.modules</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock.api</groupId>
      <artifactId>powermock-api-mockito</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.6</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-all</artifactId>
      <version>1.8.0</version>
    </dependency>
  </dependencies>

和下面测试类(跳过进口):

@RunWith(PowerMockRunner.class)
@PrepareForTest( { App.class })
public class AppTest {
    @Test
    public void testApp() {
        assertTrue(true);
    }
}

运行 mvn test -Dtest=AppTest 只是工作现,给我下列产出:

...
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.mycompany.app.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.135 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Wed Nov 25 17:34:32 CET 2009
[INFO] Final Memory: 9M/79M
[INFO] ------------------------------------------------------------------------

因此,问题是:你有一个方法注释 @TestAlertNotificationsTest?

我碰到这个问题,但它不是一个PowerMock问题。我的测试类被命名为XStaticTests.java.

当我运行"会为了寻求简便清理测试",这种试验不会运行,它只能跑的时候我指定的测试中用"-Dtest=..."

的稳赚不赔的文件提到,由默认只有这些模式搜索,用于:"/Test*.java"-包括其所有子目录和所有java文件,开始与"测试"。"/Test.java"-包括其所有子目录和所有java文件结尾的"测试"。"*/*TestCase.java"-包括其所有子目录和所有java文件结尾的"测试用例".

因此,改变分类的一个,结束与其中的一个,将运行时"会为了寻求简便测试"是所谓的,其他的保命的插件需要配置的类名称。

Powermock设置看起来确定我和罐子似乎现(假定家传递的依赖关系获得的其他powermock罐子-我们有大约6至7后,我们的常春藤解决让他们)

日蚀可能使用它自己"内部"JUnit库,因此不同的行为?

是的测试标注了org.junit.@Test ?

如果你看到的源的保命的插件,它做了一些偷偷摸摸的东西。如果它发现的任何TestNG包装类装入器,它将选择运行TestNG TestRunner.我还没有看到任何实例的两JUNit和TestNG测试运行良好side-by-side.

我有同样的问题,并且我花了一段时间才能体现出来。我的设置是拉在一个旧版本的boss.javassist,奇怪的是防止PowerMockRunner的工作。

值得注意的是,我也有一个混合JUnit/TestNG环境。我以前试过的方案的增多个万无一失的供应商,并且没有工作(使用正确的2.14.1).在升级到万无一失的2.17,我JUnit和TestNG测试开始运行,而无需宣布任何万无一失的供应商。

这是我的插件部分...

        <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>

...和相关测试deps...

    <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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top