我有一个使用PowerMock的测试用例来测试数学中的静态方法,如
@RunWith(PowerMockRunner.class)
@PrepareForTest( { Math.class })
public class Test{
@Test
public void test2(){
PowerMockito.mockStatic(Math.class);
EasyMock.expect(Math.abs(-123)).andReturn(1);
EasyMock.replay(Math.class);
long returns = Math.abs(-123);
EasyMock.verify(Math.class);
org.junit.Assert.assertEquals(1,returns);
}
}
我的pom。xml看起来像
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.2</version>
<scope>test</scope>
</dependency>
我得到的错误是
java.lang.IllegalArgumentException: Not a mock: java.lang.Class
at org.easymock.internal.MocksControl.getControl(MocksControl.java:175)
at org.easymock.EasyMock.getControl(EasyMock.java:2130)
at org.easymock.EasyMock.replay(EasyMock.java:2032)
这是我第一次使用PowerMock,我只想测试静态方法,我选择Java数学类进行测试。我想我已经完成了说明书中的所有部分https://code.google.com/p/powermock/wiki/MockStatic
我的测试用例出了什么问题?
我没有使用EasyMock,而是使用mockito替换它,代码如下
PowerMockito.mockStatic(Math.class);
Mockito.when(Math.abs(-123)).thenReturn(1);
int returns = Math.abs(-123);
这段代码在Java 7中运行良好,但在Java 8中,它失败了
我面临这个问题,并通过使用PowerMock解决它。重播(StaticClass.class)
在您的情况下,您所要做的就是将EasyMock.replay(Math.class);
替换为PowerMock.replay(Math.class);
因为您已经使用了“PowerMock”。
它的实现DAO类类似于下面的一个。 我搜索了PowerMock/EasyMock文档,但我猜大多数API方法都提供了对象,这些对象为我提供了DAO接口的虚拟实现类。 > 是否有某种方法可以创建连接的模拟对象(假设我没有物理数据库访问权限),并可以运行类中提供的后续代码,因为我必须使用这种模拟来实现代码覆盖率?
我正在尝试使用EasyMock+PowerMock模拟静态方法。如果我没有模拟静态方法,那么我会得到异常java.lang.ExceptioninInitializerError,但它有一个不同的堆栈跟踪,这完全是由于我的代码文件造成的,错误是显而易见的。但是,如果我使用EasyMock+PowerMock模拟静态方法,则行PowerMock.MockStaticNice(ClassName.Cl
问题内容: 是否可以使用EaskMock模拟具体的类?如果是这样,我该怎么办? 问题答案: 请参阅EasyMock类扩展文档,并从SourceForge项目下载它。但是,您不能模拟最终方法。 编辑:如注释中所述,这是EasyMock v3及更高版本的一部分。
我正在尝试为以下类编写单元测试: 还有一些其他方法,但这个设置代码是与我的问题相关的。在单元测试中,我想模拟(使用EasyMock)对象以及它将返回的和对象: 当我尝试用JUnit运行它时,我得到以下错误: 在上没有我可以看到的公共变量。我是EasyMock的新手,所以我想我的问题是:对于我应该告诉我的mock返回什么,以及如何告诉它这样做?我根本不知道为什么设置代码会被调用,所以这是另一个谜。更
问题内容: 我有以下要模拟的Logger,但要验证是否正在调用日志条目,而不是内容。 我想模拟用于LoggerFactory.getLogger()的任何类,但是我找不到如何做到这一点。到目前为止,这是我最终得到的结果: 我想知道: 我可以模拟静态模型以用于任何课程吗? 我只能似乎运行的,因此我似乎无法改变每个方法的特点。有没有解决的办法? 编辑结果: 我以为我已经尝试过了,但没有成功: 但是,谢
因此,这是我第一次使用EasyMock,我正在尝试向一些遗留代码添加一些单元测试。 遗留代码在Spring 3.1中,我使用的是EasyMock 3.4。 我在这里试图完成的是测试一个调用dao的服务(在Spring中编写的方法)。 代码如下: 这是我用EasyMock编写的单元测试 所以基本上发生的是,我的单元测试失败了,因为 为空! 是的,如果它实际被执行,它将为空,因为在数据库中没有clie