运行Junit&PowerMock与Mockito通过PowerMockRunner从家
题
我不能跑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] ------------------------------------------------------------------------
因此,问题是:你有一个方法注释 @Test
在 AlertNotificationsTest
?
我碰到这个问题,但它不是一个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>